Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!sdd.hp.com!zaphod.mps.ohio-state.edu!julius.cs.uiuc.edu!apple!altos!altos86!rcollins From: rcollins@altos86.Altos.COM (Robert Collins) Newsgroups: comp.sys.ibm.pc.misc Subject: Re: Difference between a 386 and a 386sx Message-ID: <4140@altos86.Altos.COM> Date: 2 Oct 90 22:12:17 GMT References: <1412@svin02.info.win.tue.nl> <4388@bwdls58.UUCP> <1990Sep20.185214.780@sj.ate.slb.com> <1990Sep21.002015.1201@thyme.jpl.nasa.gov> <4126@altos86.Altos.COM> <4463@bwdls58.UUCP> Reply-To: rcollins@altos86.UUCP (Robert Collins) Organization: Altos Computer Systems, San Jose, CA Lines: 76 In article <4463@bwdls58.UUCP> mlord@bwdls58.bnr.ca (Mark Lord) writes: >In article <4126@altos86.Altos.COM> I wrote: >>Just a friendly note in case you don't know much about '386's...But the >>SX and DX have the same size prefetch queue. This can be confirmed by >>simply looking in the SX and DX hardware reference manuals (respectively) >>and verify that both have 16-byte prefetch queues. > >Somebody with a manual should probably double-check this assertion. >I do not have a manual any more, but my recollection is that both processors >have 4-deep prefetch queues.. that is, each can prefetch up to 4 machine words. > Sure, I don't mind double checking my own assertion...even though I gave a literary reference (which was actually an incorrect reference). This time, I will be more explicit... In "386 (tm) DX Microprocessor High Performance 32-Bit CHMOS Microprocessor with Integrated Memory Management" book by Intel (Part number 231630) on page 15 under section "2.4.1 Instruction Set Overview" comes the following quote: "The average instruction length is 3.2 bytes long. Since the 386 DX has a 16-byte instruction queue, an average of 5 instructions will be prefetched." This can be cross checked (the same text) in the Intel "Microprocessors" manual (part number 230843) on page 4-181. (The manual I just quoted is included inside this other manual.) Now, in the Intel "386 (tm) SX Microprocessor" manual (part number 240187) on page 10 under the section "2.2 Instruction Set" comes the following quote: "The average instruction length is 3.2 bytes long. Since the 386 SX has a 16-byte instruction queue, an average of 5 instructions will be prefetched." This same text can be cross referenced in the Intel "Microprocessors" manual (same as above, part number 230843) on page 4-118. >On a DX, a machine word is 32 bits, whereas on an SX it is 16 bits (for the >BIU, that is). Thus, a DX has a 16-byte prefetch queue, and an SX has only 8. > If this was true, then the SX manual would have stated that an average of 2.5 instructions would be prefetched, not 5. Of corse, Intel could have simply copied huge portions of the DX manual without checking for content. So, let me try and verify my statement from some other text... Let's turn to page 75 of the Intel "386 SX Microprocessor" manual, (P/N 240187) or page 4-483 of the Intel "Microprocessors" manual (P/N 230843). Under section "8.0 Differences between the 386 SX CPU and the 386 DX CPU" comes the following quote: "6. The 386 DX CPU prefetch unit fetches code in four-byte units. The 386 SX CPU prefetch unit reads two bytes as one unit (like the 80286). In BS16 mode, the 386 DX CPU takes two consecutive bus cycles to complete a prefetch request. If there is a data read or write request after the prefetch starts, the 386 DX CPU will fetch all four bytes before addressing the new request." Please take note of the consistant use of the word "byte" in the Intel manuals. They talk about prefetch unit size in terms of bytes. They also describe the prefetch queue size in terms of bytes. I believe it is reasonable to assume Intel is talking about the same size 8-bit quantity as being a byte -- in both references. Furthermore, under the same heading "8.0 Differences between the 386 SX CPU and the 386 DX CPU" there is no mention to different prefetch queue sizes. I believe that if there was a difference, this is where it would be listed. And since there is no mention of it, and the consistent use of the word "byte" as a descriptive term, firmly establishes the fact that the prefetch queue is 16 bytes (16 x 8-bits) long on both CPU's. So now somebody with a manual has double checked this assertions. It's ironic, but the request was to have "somebody with the manual" check this...even though I made reference to the manual?!?????????? -- "Worship the Lord your God, and serve him only." Mat. 4:10 Robert Collins UUCP: ...!sun!altos86!rcollins HOME: (408) 225-8002 WORK: (408) 432-6200 x4356