Why use half duplex at all?

7,563

Solution 1

Full duplex requires more than half duplex.

Typically full duplex is achieved by having two separate data paths. That means two sets of wires, separate sets of transmission and receiving electronics and a controller that has both input and output buffers and electronics.

Half duplex is simpler, has lower requirements and just needs you to have some form of protocol to handle or avoid collisions. If all the transfers are mostly in one direction then full duplex offers very little benefit over half-duplex and has a higher cost. Also if the majority of transfers are tiny (mice, keyboards, etc) then again full duplex is a waste.

USB1 and USB2 is half duplex. It has only one bidirectional signal pair. While we have connected hard disks and USB sticks to them the hard drives are the only time we came close to saturating the connection. USB sticks typically had 5-15MB/s transfer speeds that left enough bandwidth for other devices. It is only recently that more typical high speed devices have become more common.

USB3 has separate TX and RX pairs and is intended for far faster transfers hence it makes more sense to integrate full duplex control. We use it for multi-gigibit data transfers and displays and other devices. At higher speeds collisions cost more downtime and requires larger and larger buffers in the event that transaction need to be retransmitted so it makes more sense to integrate full duplex.

In general the question you need to ask isn't "why doesn't everyone use full duplex?" But "Do I need full duplex and the extra cost of design, extra electronics, cable with more wires in it and so on?"

Solution 2

With the exception of some networking connections (e.g., router to internet, server to local network), most usage - whether older serial or parallel, USB, ethernet or almost anything else is mostly one direction either all the time or most of the time. Some examples, in both low and high (relatively) speed connections:

  • Keyboard, mouse, other user input - almost entirely from device to host computer, with very little (e.g., some configuration, set keyboard lights) in the other direction
  • Cameras - still or video - almost everything device to host computer
  • Printers - almost everything host computer to device
  • Scanners - almost everything device to host computer
  • Multi-function printer/scanner - in almost all cases, only one function is really going on at any time - either printing (host to device) or scanning (device to host)
  • Network - with some exceptions, most ordinary user computer network usage is mostly in one direction at any point in time - e.g., streaming video from router/internet to computer, upload files from computer to router/internet. There is some overlap particularly if there is heavy usage of shared files or any kind of server (web server, file server, etc.) and those are situations that truly benefit from a full duplex connection.

There is some more routine usage these days that is more symmetric - Zoom and other video conferencing that has both a video stream going out and a video stream coming in. But typical usage is a couple of megabits in each direction, which even a 100 Meg. half-duplex connection should be able to handle with plenty of room to spare.

End result: For competitive reasons with every penny counting on the small stuff (USB devices) and every dollar on the big stuff (computers), manufacturers will use half-duplex connections when they can, provided it has no noticeable impact on usability.

Solution 3

Some protocols are inherently send-and-wait, these include USB 2 (and below), Modbus, and 1-wire protocol. In these protocols, there is one controller, and several devices. The Controller interrogates a Device, and waits for a reply. Until the Device replies (or is timed out), the Controller can't interrogate another device. With these protocols there is little advantage to having a different reply path.

Solution 4

Half duplex is almost always more efficient and faster.

For any data channel you have limited bandwidth, declaring something "full duplex" doesn't change that. Your DSL line has to allocate different parts of its bandwidth to uploading vs downloading. Wifi signals can only transmit so much before they start interfering. Generally if you allocate more bandwidth to upload, you have less for download and vice versa. This is true of pretty much every media.

You can route two wires to get full duplex to somewhere, but then only half your full bandwidth is used for each direction because you could have had both wires transmitting the same direction if one side was more chatty.

Unless you are expecting exactly the same constant amount of data in both directions always, full duplex doesn't make much sense. It makes much more sense to utilize your full bandwidth for whomever needs to talk at a given time so they can finish what they have to say quickly and let someone else talk. If you remember modems and the speed jump that happend with the V.92 standard, it was due to being able to switch from a full duplex to a half duplex mode that allowed that happen. so it could dedicate the full bandwidth to downloading rather than constantly reserve some for uploading. Half duplex made things significantly faster.

Additionally it is a whole lot harder to do multi-drop protocols full duplex. When you have a dozen devices connected to the same I2C, CAN-BUS, RS485 or whatnot line then who is the full duplex connection between? everyone hears what everyone is saying.

There are some times where full duplex does make sense in a limited situation, sometimes you actually have the extra bandwidth so are okay wasting some on the unused channel because the improvement in throughput is worth it or the characteristics of what it is used for makes full duplex more natural. short distance mass storage interfaces come to mind, like SATA. where you expect a large amount of traffic in both directions and the cost of idle copper isn't that big a deal when it only needs to go a few feet.

Share:
7,563

Related videos on Youtube

Truth
Author by

Truth

Updated on September 18, 2022

Comments

  • Truth
    Truth over 1 year

    I know what full and half duplex is, but in all respects full duplex has more advantages, so why use half duplex at all, in other words: In full duplex connection , the bandwidth doubles and collision does not occur, so why is there half duplex at all and it has not disappeared?

    • LPChip
      LPChip about 3 years
      Same answer, different question. "There is extremely fast internet in the world. Why does not everyone has fast internet?"
    • ganesh
      ganesh about 3 years
      Historical reasons. (read: go back 1990 era, thin ethernet, share medium etc). If you want to ask why use it these days (2021 ish) then you will get a different answer.
    • Truth
      Truth about 3 years
      @LPChip You want to say that half duplex is used because of such costs and cases
    • John
      John about 3 years
      Yes, manufacturing costs and volume of manufacture do play a part in this. I added a footnote about this in my answer. Same as: up to manufacturers how they implement.
    • H2ONaCl
      H2ONaCl about 3 years
      Copper was costly.
    • J...
      J... about 3 years
      All solutions for all things have to balance cost, performance, and energy. Most people don't want to spend more than they need to. Once you start having your own money to manage it usually becomes more intuitive to understand the constraints that are faced when needing to solve a problem. Almost everything humans do we would do better if we could spend more money.
    • David Foerster
      David Foerster about 3 years
      If you can come up with a way to establish a non-multiplexed, full-duplex connection over the air you would soon be recommended for a Nobel prize in physics.
    • John Meacham
      John Meacham about 3 years
      It's not a cost thing, half duplex is generally much faster. With full duplex you are wasting half your bandwidth unless both devices want to talk at exactly the same time and rate. With half duplex you can dedicate the whole channel to whomever needs to talk giving them twice the bandwidth they would have on a full duplex connection. Whenever you have a choice to make something full duplex, you almost always get better performance by making a twice as fast half duplex connection instead.
    • Matthew
      Matthew about 3 years
      @JohnMeacham, but there are other limiting factors, which... tend to come down to cost. By your logic, I ought to trunk 10 Cat6 cables to my computer, or 10 SATA cables to my SSD. But I don't, because the bandwidth I have is sufficient for what the devices on the ends can handle. In fact, while your argument looks logical, I think it fails in the many modern instances when we can generally throw enough wires at the problem that something else becomes the bottleneck.
    • Mathew Lionnet
      Mathew Lionnet about 3 years
      Not so much for networking but for example serial is much easier to implement in software when you know if you need to send or receive data, especially if you have no threads or want to avoid non blocking loops.
    • John Meacham
      John Meacham about 3 years
      @Matthew of course if bandwidth is sufficient, it is sufficient. I just wanted to point out that cost is generally not the reason half duplex is used, as it requires more complicated hardware and protocols to negotiate the media. Sometimes you can get the backwards channel "for free" due to other design choices like gig ethernet so full duplex makes sense (its not really completely free as a more dense half-duplex protocol could have been used if the noise were lower, but it is cheaper than exactly double and simplifies the design to just declare it full duplex and eat the inefficiency.).
  • user253751
    user253751 about 3 years
    Also a full-duplex connection can only be between two devices. You can plug 3 or more things into a half-duplex connection (which I guess makes it third-duplex, quarter-duplex, ...)
  • Mokubai
    Mokubai about 3 years
    @user253751 we would typically call that "multi-drop" as the connection is still half-duplex, only one device can be transmitting at a time with all others being passive listeners. Typically in that arrangement you have devices set up with an address as part of the protocol and a challenge-response arrangement with the main "server" device requesting data from each client device in turn. An example: brooksinstrument.com/en/blog/…
  • user1937198
    user1937198 about 3 years
    @Mokubai Or with something like CSMA to handle collisions, like hub based ethernet network, or wireless protocols which are effectively using a half-duplex connection over the radio.
  • ivan_pozdeev
    ivan_pozdeev about 3 years
    @user253751 I thought about adding that note, too -- but then realised that technically, multipoint ability is orthogonal to duplex. You can very well have full duplex with multipoint if you add a second channel for transfer in the other direction.
  • supercat
    supercat about 3 years
    @user253751: It's possible to use full duplex with an arbitrary number of devices if there is a single coordinator which is the originator or recipient of every individual transmission. The coordinator transmits on A and listens on B, while all other devices do the reverse. This can be a useful arrangement with things like sensor arrays. It requires more cabling than half-duplex, but the hardware is otherwise pretty similar.
  • supercat
    supercat about 3 years
    @user1937198: Some communications media may only be able to accommodate one data transmission at a time, but also accommodate a "jam" transmission which is recognizable as such. A multi-drop interface that has an explicit coordinator role may respond to a jam transmission by asking devices to jam if the first bit of their ID is zero and they want the master's attention, and then based upon the response to that or lack thereof, either asking devices to jam if their ID starts with 1, or with 00, etc. until they identify what device needs attention.
  • John Meacham
    John Meacham about 3 years
    CAN bus has a neat way to handle it, it is physically wired so a dominant state (logic 0) overrides the recessive state (logic 1). because the recessive state is letting the wires just drift together and the dominant one is pulling them apart. So if anyone is transmitting the dominant state they all see zero. So you just start your transmission with your address and listen to see if your address is transmitted, if someone else transmitted a lower address than yours (more zeros) then you would hear their address and let them talk, which also is used to give a natural priority to the devices.
  • Ferrybig
    Ferrybig about 3 years
    You can have full duplex communication over a single wire pair. This is how old 2 wire telephones worked. You could speak and listen at the same time with no cross talk
  • Mokubai
    Mokubai about 3 years
    @Ferrybig indeed you can, but it still requires fully independent transmitter and receiver electronics, as well are needing those electronics to be isolated from the DC voltage on the line (such modems tend to be AC coupled) and to have band-pass filters so that the receiver doesn't "see" the transmission side frequencies and vice versa. There is an extra level of complication above having dedicated TX and RX data lines that cheap residential telecommunications lines made necessary by their restrictions.