SoftFSB v1.7F final (it exists a newer v1.7G beta)

SoftFSB v1.7 [final] , by H. Oda (mirror @ vector.co.jp), lets you change the FSB frequency on the fly, in software. It doesn't give you nearly the control that the Turbo.PLL does, as you're stuck with whatever FSB values your motherboard affords. These values depend on the particular IC that your motherboard manufacturer used for the CK100 (also called the PLL-IC in most manuals); different PLL-ICs produce different FSB frequencies.

Many motherboard companies use the line of PLL-ICs available from IC-Works. The IC-Works W124 is a typical 24-pin PLL-IC which will be used to demonstrate how SoftFSB works. Many PLL-ICs work a little differently, but the basic concepts are the same.

See this page for official documentation (copy).

SoftFSB manipulates the W124 via a set of internal, programmable registers. The PII, like most ICs on the motherboard, has a set of internal registers that allow you initialize it into certain states. The W124 has these same sorts of registers. They're initialized to default values at power-on, but you can go in and change them via a serial data interface.

This serial data interface is slightly different from the parallel programming interface for the PII. The W124 has two pins on it that are used for writing to its internal registers: SDATA and SCLOCK. Instead of placing a combination of 1s and 0s on multiple pins at once (like you do when setting the PII's clock multiplier), you feed the SDATA pin a sequence of 1s and 0s. This bit sequence is grouped into bytes, and these bytes are placed in the proper control registers. These control registers are used to set configuration options like the device mode, power management functions, and, of course, the FSB speed.

This serial programming interface makes programming the W124 sort of like programming with Morse code. You send it a string of successive pulses, which it then groups into meaningful hunks and interprets. It is because its programming interface is serial, that the W124 needs the SCLOCK pin. As most of my engineer readers know, whenever you do serial data communication, you need a clock signal to synchronize the sender and receiver. In the W124's case, this clock signal goes in on the SCLOCK pin.

Wasting pins is a bad move. If youíre smart, youíll get around this by making some pins do double duty. What you do is designate one pin (lets call him RESET#) as the lookout. Whenever itís time to configure the chip, you let the chip know by activating RESET#. When the chip feels RESET# activate, it stops what itís doing and takes a few pins from their normal duties (whatever those are) and hooks them up to the control register. So while RESET# is active, these special pins will let you write to the control register. When RESET# goes inactive, everything returns to normal and those pins go back to their day jobs

The particular bits that interest us are in the Model Specific Register (MSR) that lives at address 2Ah. Bits 25 to 22 of MSR 2Ah tell the CPU what multiplier to use in the PLL. The following table shows how the values of the bits in that register translate into clock ratios: Table 5-7. Pentium ģ II Processor Family Power-On Configuration Register Bus Frequency to Core Frequency Ratio Bit Field
D[25:22] Ratio of Core Frequency to Bus Frequency
0010 4
0011 2
0101 7/2
0110 9/2
0100 2

Whenever RESET# goes low, the PII takes four pins that normally do other things, and uses them to set the clock multiplier. The four lucky pins are A20M#, IGNNE#, LINT[1] and LINT[0]. Whenever RESET# goes low, itís up to the chipset on the motherboard to tickle them the right way and set the PIIís clock multiplier

Ratio of system bus to processor core frequency LINT[1] LINT[0] A20M# IGNNE#
1/2 L L L L
1/4 L L H L
2/7 L H L H
2/9 L H H L
1/2 H H H H

As you can see from the above table, the W124 gives you a decent range of FSB values. The increments between the values, however, are nowhere near as small as they are with the Turbo.PLL. That's the tradeoff you make between the two products: the Turbo.PLL takes more work (and risk) to implement, but it affords much finer control over the FSB; SoftFSB requires only a simple download and installation, but the control isn't as fine.

As far as the safety of SoftFSB and its effects on the stability of your system, my concerns are exactly the same as they were with the Turbo.PLL. This is a program that, like the Turbo.PLL, affects the SDRAM banks, as well as the PCI and AGP buses, while leaving the other, fixed signals alone. Therefore, its ill effects would be pretty much the same as those of the Turbo.PLL: possible loss of data and hard disk corruption, video card flakiness, etc. Again, I recommend caution when trying this product.