VirtualLarry
No Lifer
- Aug 25, 2001
- 56,587
- 10,225
- 126
Let me explain this simply. The CPU can only do one task at a time with software. First Bios instructions loads into the CPU then into memory, then windows load into memory, while doing all this the CPU only works with on task at a time with all things linked to it, the CPU goes round robin. So when it is the PCI E turn being called from by the software, the slots run in order of IRQs within the windows software and only one device communicates with the CPU at a time, then the data is sent to memory and read from the memory, this is all done in ns, then the CPU takes the next instruction from the software.
The only main difference from PCI to PCI-E, is the PCI lanes runs a parallel data set sent to and from the CPU and PCI-E lanes is Serial data set sent to and from the CPU, like SATA Drive communication.
The only thing I did not mention was the south bridge that controls the traffic one data set at a time.
So now you can see that the CPU only handles one task at a time, otherwise there would be a collision in calculations by the CPU.
Let me guess, you read "Computer architecture for dummies", and now you think you understand how the PC works.
Hint: look up "async operation" and "direct memory access".
PS. CPUs these days, have multiple cores. And each core, can have multiple operations "in flight" at once.
Doesn't that boggle your mind. ^_^
Edit: Even busses are multi-tasking / multi-qeued / threaded. Look up SiS's MuToil bus specs, for what was achieved years ago.
ID-Based Transaction Ordering:
Reduces transaction late
ncies in the system
Conventional transaction ordering in PCIe is ve
ry strict (limits transactions bypassing older
transactions) to ensure correctness of the
producer-consumer model. For an example:
Reads can not go around Writes to guarantee
that resulting operations use correct and not
stale data. This requirement has a root in a very simplified and restricted platform model
(from an early era of PC) where there was a sing
le Host CPU coordinating a work of an IO
subsystem that used serialization of interconnect operations. Strictly following this
requirement in modern systems can cause fa
irly long transaction stalls of 100’s of
nanoseconds affecting system performance.
Going forward with multi-core/multi-thread
Hosts connected to more sophisticated/complex
IO devices via PCIe fu
lly split-transaction
protocol, there is an opportuni
ty to optimize flows between
unrelated transaction streams.
For an example: graphics card initiated traffic may not have any direct relation to network
controller traffic. Currently available mechanisms in PCIe to mitigate these restrictions are
based on notion of Virtual Channels as well as on so called Relaxed Ordering transaction
attribute. However, both of these have been
defined from server usage point of view and
carry inherent cost making it less attractive fo
r mainstream use. To a
ddress this deficiency,
PCIe 3.0 defines ID-Based Transaction Orderi
ng mechanism that re
lies on current PCIe
protocol mechanism for differentiating traffic so
urced by different devi
ces (i.e. Requestor ID
and Target ID). New mechanism
enables PCIe devices to asse
rt an attribute flag (on a
transaction basis) that allows relaxation of transaction ordering within PCIe fabric and within
Host subsystem (including cache/memory hier
archy). This mechanism can be effectively
applied to unrelate
d streams within:
•
Multi-Function device (MFD) / Root Port Direct Connect
•
Switched Environments
•
Multiple RC Integrated Endpoints (RCIEs)
http://www.intel.com/content/dam/doc/white-paper/pci-express3-accelerator-white-paper.pdf
5. PCI Express Architecture
And unlike PCI, where the bus bandwidth was shared among devices, this bandwidth is provided to each device.
http://www.ni.com/white-paper/3767/en/
If the CPU only serviced PCI-E devices round-robin, and there was no concurrency happening with devices and system RAM / cache / etc., then what would the purpose be of providing bus bandwidth to each device in parallel, if parallel operation wasn't possible?
Hint: Your model is wrong.
Edit: To clarify, I'm not calling you a "dummy", just saying that your model description seems so simplistic that it could have been taken from a "for Dummies" book.
Last edited:
