To: Tenchusatsu who wrote (55653 ) 4/16/1999 4:40:00 PM From: Ali Chen Read Replies (1) | Respond to of 1578177
Ten, <Well ... er ... YES. > Sounds like the fact of tripled data stream surprised you. First time ever thought about it? <Except that this isn't some uneducated idiot's idea.> <Rather, this is called Direct Memory Access. What you are arguing for is the old way of doing things, which is writing data directly from the CPU to the devices. This requires constant CPU attention,..> Unfortunately, this IS an "uneducated idiot's" area. DMA was good in old times (you probably don't remember) when memory systems had no caches. Then the DMA idea become a bad idea when CPU speeds surpassed capabilities of frozen Intel' 8259 controller. After that, with invention of PCI and "busmastering", it suddenly become again "a good idea", but without any understanding of new multilevel memories. <..mainly because CPU-to-PCI transactions are painfully slow compared to CPU-to-memory transactions> Your thinking is narrow. As I said, in many major classes of applications the data needs to be processed in some or other way. Any modern processor contains write-combining buffers, so from the CPU viewpoint this write operation cost nothing. Therefore, with proper code rearrangement and dual buffering the cost of PCI transaction can be totally overlapped with processing time. <It's much better for the CPU to write the data to memory, then let the PCI or AGP device access that data directly from memory.> Let me re-formulate the concept in more correct way: It is much better for Microsoft to write a couple of general-purpose API considering the memory as an abstract entity. Then a bunch of programmers need no education to write windows apps thus reducing drastically the cost of software development and time to market. How about that? <This requires less CPU resources than the method you suggest. In other words, the CPU is free to do other stuff while the PCI and AGP devices do their thing. This Direct Memory Access model is in use today, from RAID SCSI hard drive controllers, to AGP graphics cards accessing textures from DRAM, to Gigabit Ethernet controllers which need a constant stream of data coming from the SDRAM.> Again, all your examples concern cases where the data are barely touched by CPU, headers only - in your servers/routers. Your "constant stream of data" from Gigabit NICs eventually ends up in another NIC with exactly the same data, so why to use the RAM at all? Aha, Microsoft and Intel do not support direct PCI-to-PCI transactions? Textures are much more efficient when placed in areas where they belongs to - video cards. Etc., Etc. As I said, narrow thinking. When you have a real-time application like "alien mutant blasting" or 3-D CAD, or sound processing, or... there always is the way to overlap data transactions with data processing, with usual speed-up of a factor of 3, it just need a little of education. I am not suggesting anything new or old, just making observations. Let me reiterate my point: better K7 bandwidth is beneficial for correctly written applications as compared to Pentium memory-matched bandwidth. For dumbly-written apps there is little difference. Therefore, on average, K7 will perform better. Any more objections?