A Gathering Place


Home | Games | Message Board | Chat | Contact Us

Cyrix 6x86 MX Architechure

Shortly after the release of the Pentium 2, Cyrix released the 6x86MX processor. Unlike AMD, Cyrix aimed their processor right at the Pentium 2. Of the sixth generation processors, the 6x86MX is the only non-RISC processor on my site. Also, the 6x86MX isn't operating at the same Mhz as the processors from AMD and Intel. They use a performance rating, which rates the speed of their processors relative to those from Intel. The 6x86MX-PR233 has a performance rating of 233 MHz but actually it's only operating at 188 MHz. The 6x86MX-PR233 uses a 75 MHz bus speed with a clock multiplier of 2.5. (The PR200 is actually a 166 MHz processor with a 66 MHz bus and the PR166 is actually a 150 MHz processor with a 60 MHz bus) Well, all this makes it sound like the 6x86MX won't perform as well as the Pentium 2 when it comes to real-world performance, lets check out the architecture and see if they have some tricks up their sleeve....

The Cyrix 6x86MX contains a bus interface unit, cache unit, integer unit, floating point unit, and memory management unit.

Bus Interface Unit
The bus interface unit is responsible for the communication between the motherboard (hence any component on the motherboard) and the processor's internal execution units.

Cache Unit
The 6x86MX contains two separate caches, the dual-ported 64K L1 cache and 256-byte instruction line cache. According to Cyrix, the unified cache has a higher hit rate than using separate data and instruction caches. The cache unit contains the most recently used data and instructions that will be processed by the various execution units. For multimedia operations, the 6x86MX has the ability to designate lines in the L1 cache on a line by line basis. These locked down lines are a private memory for the CPU only, it can use it for whatever purposes it needs.

Memory Management Unit
Not much to say here, so I took this from the Cyrix website: The memory management unit translates the linear address supplied by the instruction unit into a physical address to be used by the unified cache and the bus interface.

Branch target buffer
Wonder how the 6x86MX supports branch prediction without a branch unit? Well, that's why I included this section. Branch prediction and speculative execution help reduce pipeline stalls when branch instructions occur. The 6x86MX CPU contains a 512-entry branch target buffer to store branch target addresses. It also has a 1,024-entry branch history table. When an unconditional branch instruction occurs, the 6x86MX processor accesses the branch target buffer to check the branch instruction's target address. If found there, the CPU begins fetching at the address specified by the branch target buffer. Correctly predicted branch instructions can execute in a single clock cycle. If it guesses wrong, the penalty can range from 3 to 5 clock cycles.

The Execution Units

Integer Unit
The integer unit contains two seven-stage integer pipelines. (X and Y) Certain instructions are processed in the X pipeline that aren't done in the Y. The 6x86MX's integer unit supports these architectural features: Data Bypassing: Wondering what this is, eh? Well I'll try to explain it in as few big words as possible. :) Basically, when data from an instruction is written to memory and the next instruction reads that same data from that memory, a memory read cycle will occur. (The second instruction needs the original data, not the newly written on stuff) With data bypassing, the original data is kept and passed on to the second instruction. The above scenario is called a read-after-write dependency. Data Forwarding: Data forwarding is another technique used to solve read-after-write dependencies. It can resolve the issue in either of two ways (depending on the situation) operand forwarding, or result forwarding. Operand forwarding is similar to the previous example because the original data is needed by the second instruction, with operand forwarding, the original data is available to both instructions. Result forwarding occurs when the results of the first instruction are needed by the second instruction, the 6x86MX processes the instruction and stores the results for both instructions. Out-of-order execution: Again, out-of-order execution occurs when one instruction is processed faster than the instruction in the other pipeline. If this happens, the instructions can complete out-of-order.
Register Renaming: The 6x86MX contains 32 physical general purpose registers. These registers can be "renamed" to store instruction results. Speculative Execution: Lets say a branch instruction pops up, (branch instructions require the processor to go to a different part of the program) well if this occurs a pipeline stall happens. (The pipeline stalls because the processor is looking for the location of the branch instruction instead of crunching the code) Enter speculative execution, with speculative execution the pipeline no longer stalls because instructions can be executed while the branch instructions' address is being determined. The 6x86MX CPU supports up to 4 levels of speculation. (i.e. can perform speculative execution as long as there are no more than 4 unresolved branch instructions) Once the branch instruction is complete, the level of speculation is decreased, if the branch's address is mispredicted, the 6x86MX determines the correct address and then is able to return to it's original state in a single clock cycle.

Floating Point Unit
Okay, just a few things I wanted to mention about the 6x86MX's floating point unit. This is the same floating point unit used in the original 6x86 processor. Also, like the Intel processors, the 6x86MX's floating point unit also is responsible for processing MMX instructions. (I kinda like AMD's decision to make a separate multimedia unit for MMX instructions) If you want info on the Quake floating point performance, or an explanation of what a pipelined FPU is, go to the K6 microarchitecture page; I've explained it all in great detail there. This image was taken off the Cyrix website:

Sorry the image looks so bad guys, nothing I can do about that. Well, I was hoping this image would help explain the stages the 6x86MX goes through when processing instructions. 1.Fetch stage, fetches 16 bytes of code from the cache unit in a single clock cycle. During the fetch stage, the code is checked for any branch instructions. 2.Instructions are sent to the X or Y pipeline in the integer unit for execution. (Depending on what type of instruction it is, the instruction could also end up in the branch target buffer or the floating point unit) I don't know if you can read it or not, but contained in the CPU core (in the image) is the FPU, branch target buffer, and integer unit. 3.After leaving the CPU core the instruction is sent to the memory management unit where it is given a physical address to be used by the unified cache and bus interface. (In some cases, it can also go straight to the cache unit) 4.The instruction is sent to the cache unit, and then sent to the bus interface unit 5.The instruction can now be sent anywhere on the system motherboard

Conclusion
Well, I guess the architecture of the 6x86MX proves the saying that simpler is better, because the benchmarks I've seen show this processor competing very well with the K6 and Pentium 2 in terms of integer performance. Of all the 6th generation processors, Cyrix just might have the best integer unit of them all. When it comes to the floating point unit, however, much more performance is desired. Benchmarks show this processor has the weakest floating point unit of them all. (I guess you can't have everything, can you??) When you consider that this processor uses complicated CISC instructions and is operating at a lower MHz, you still have to be impressed with the processor Cyrix put together. Obviously, Intel is too, all the recent processor price cuts show that Intel knows the competition has caught up, and their Socket 7 processor is becoming obsolete. Only time will tell just how effective the AMD and Cyrix processors will be at gaining market share, but at this point in time, it seems Intel is running scared.


Home | Games | Message Board | Chat | Contact Us

jbstone@usa.net jbstone@usa.net
2813 12th st SE
Salem, Oregon, 97302 USA
Phone: 1-503-588-0154
FAX: 1-503-588-0157

Web Services Provided by...
Webstar Internet Design