The original ethernet networks ran on coaxial cables and only at 10Mbps (1.25 million bytes per second). These systems were known as 10base2 and 10base5. The coaxial cable was a shared medium for all the connected devices, so only one device could transmit at a time. Devices would wait for silence on the wire before transmitting (carrier-sense). It was still possible for more than one device to make the decision to transmit at the same time, so each device would also listen to its own transmission to make sure that no-one else was transmitting at the same time: if another transmission was detected (collision detection), each device would stop transmitting and wait a random amount of time before trying again. This method of working was known as CSMA/CD: carrier-sense multiple access with collision detection.
When ethernet was re-implemented on twisted-pair cable (UTP or STP), the same CSMA/CD conventions were retained, but now there were only two devices on the cable: one at each end. The original style of ethernet working became known as half-duplex or semi-duplex: data could flow in either direction, but only in one direction at one time. Ethernet at 10Mbps on twisted-pair cable is known as 10baseT.
With the advent of twisted-pair cable between only two devices, it became possible to separate the electrical signals travelling in each direction onto different pairs of conductors in the cable, making full-duplex ethernet possible: data could flow in both directions at once without collisions. This required improved ethernet hardware at both ends, and each end required knowledge of whether the other end was capable of full-duplex working. A full-duplex ethernet card does not bother to listen for silence before transmitting, so cannot inter-work with a half-duplex card: chaos would ensure and performance would be terrible, as the half-duplex card would keep detecting collisions. So the consequence of mismatched duplex settings (full-duplex at one end, half-duplex at the other) is very poor data performance and packet loss.
With improved cabling, it became possible to raise ethernet speeds to 100Mbps: once again this required improved hardware at both ends of the link, and both ends had to function at the same speed, otherwise they could not communicate. Ethernet at 100Mbps on twisted-pair cable is known as 100baseTX.
The need for each end of the link to know the speed and duplex settings of the other end gave rise to an ethenet auto-negotiation protocol implemented in the hardware, so that each end could determine the supported features of the other, and they could agree on an optimal setting that both ends could support. Unfortunately, this hardware auto-negotiation protocol has been known to fail, and leave the link with a duplex mismatch. Many hard-bitten network administrators now routinely turn off ethernet auto-negotiation and configure device speed and duplex settings manually at both ends of the link, thus ensuring a correct match.
It is always safe to force one end of an ethernet link to be semi-duplex even when you are not sure what duplex setting is in effect at the other end of the link.
It is never safe to force one end of an ethernet link to be full-duplex (or allow it to autonegotiate itself to full-duplex), unless you are sure the other end of the link is also full-duplex.
Ethernet card: duplex setting
"Does semi-duplex mean I can't download and upload at the same time?"
Semi-duplex means that only one end of the ethernet link can transmit at any one instant. But this state lasts only for the duration of a single ethernet packet (just over 1 millisecond at 10 Mbps). It is possible to interleave ethernet packets flowing in opposite directions so rapidly that the impression of simultaneous continuous download and upload is maintained. There is more than enough bandwidth in a 10 Mbps semi-duplex link to keep both download and upload fully loaded on a cable modem. So, yes, you can download and upload simultaneously with a half-duplex ethernet setting.