|
Video BIOS Shadowing
Options : Enabled, Disabled
When this feature is enabled, the Video BIOS is copied to the system RAM for quicker access. Shadowing
improves the BIOS' performance because the BIOS can now be read by the CPU through the
64-bit DRAM bus as opposed to the 8-bit XT bus. This seems quite attractive
since that's at least a 100x increase in transfer rate and the only price is
the loss of some system RAM which is used to mirror the ROM contents.
However, modern operating systems bypass the BIOS completely and access the graphics card's hardware
directly. So, no BIOS calls are made and no benefit from BIOS
shadowing is realized. In light of this, there's no use in wasting RAM just to shadow the
Video BIOS when it's not used at all.
Ryu Connor confirmed this by sending me a
link to a Microsoft article about Shadowing BIOS under
WinNT 4.0. According to this article, shadowing the BIOS (irrespective of what BIOS it
is) does not bring about any performance enhancements because it's not used by WinNT. It
will only waste memory. Although the article did not say anything about Win9x, it's the
same for Win9x as it's based on the same Win32 architecture.
Not only that, some manuals also allude to the possibility of system instability when
certain games access the RAM region that has already been used to shadow the Video BIOS.
However, this is no longer an issue as the shadowed RAM region has been moved far from the
reach of programs.
What could be an issue is if only 32KB of the video BIOS is shadowed.
Newer video BIOSes are larger than 32KB in size but if only 32KB is shadowed
and the rest is left in their original locations, then stability issues may
arise when the BIOS is accessed. So, if you intend to shadow the video BIOS,
you'll need to ensure that the entire video BIOS is shadowed. In many cases,
only the C000-C7FF region is shadowed by default. To correct that, you'll
need to :-
- enable video BIOS shadowing (for the C000-C7FF region) and
- enable the shadowing of the remaining portions, i.e. C800-CBFF,
until the entire video BIOS is shadowed.
That tip was generously contributed by X.
Finally, most graphics cards now come with Flash ROM (EEPROM) which is
much faster than the old ROM and even faster than DRAM. Thus, there's no
longer a need for video BIOS shadowing and there may even be a performance
advantage in not shadowing! In addition, you shouldn't shadow the video BIOS
if your graphics card comes with a Flash ROM because you wouldn't be able to
update its contents if shadowing is enabled.
On the other hand, there may still be a use for this feature. Some DOS games still make use of
the video BIOS because they don't directly access the graphics processor
(although more graphical ones do). So, if you play
lots of old DOS games, you can try enabling Video BIOS Shadowing for better performance. This tip is
courtesy of Ivan Warren.
For an excellent overview of video BIOSes and their shadowing, check out William Patrick McNamara's explanation :-
The whole issue is historical in nature. Way back when having a
VGA video card was a big thing, graphics cards were pretty dumb and fairly simple as well.
They amounted to a chunk of memory that represented the pixels on the screen. To change a
pixel, you changed the memory representing it. Things like changing color palettes, screen
resolutions, etc were done by writing to a set of registers on the video card. However,
everything was done by the processor. Since interfacing with hardware varies with the
hardware, talking to the video card depended on the card you had installed. To help solve
the problem, the video card included a BIOS chip on it. Quite simply the video BIOS was
an extension to the system BIOS. It was simply a documented set of function calls a
programmer could use to interface with the video chipset.
So why did BIOS shadowing come about? The memory used to store
the BIOS on a video card is usually some sort of EPROM (Electrically Programmable Read
Only Memory). A very fast EPROM has an access time of 130-150ns, which is about the same
as the memory in an 8086 based computer. Also, the bus width is 8bits. As computers got
faster (x386, x486, etc) and games got more graphical, calling the BIOS got to be more of
a bottleneck. To help alleviate the problem, the video BIOS was moved to the faster 16bit
system memory to speed things up. Actually most graphical DOS games rarely call the BIOS
anyway. Most interact with the chipset directly if possible.
A quick summary: In the "old days", video BIOS didn't
really have much to do with running the video card. It simply provided a set of function
calls to make a developers life easier.
"And now for something completely different....."
New video cards, ones that have accelerated functions, fall into
a different category. They actually have a processor built on the card. In the same way
that the system BIOS tells you processor how to start your computer, your video BIOS tells
you video processor how to display images. The reason, new card have flash ROMs on them,
is so that the manufacturers can fix any bugs that exist in the code. Any operating system
that uses the accelerated features of a video card, communicates directly with the
processor on the card, giving it a set of commands. This is the job of the video driver.
The idea is, the driver presents the operating system with a document set of function
calls. When on of these calls is made, the driver sends the appropriate command to the
video processor. The video processor the carries out the commands as it programming (video
BIOS) dictates.
As far as shadowing the video BIOS goes, it doesn't matter.
Windows, Linux, or any other OS that uses the accelerated functions never directly
communicates with the video BIOS. Good 'ole DOS however still does, and the same functions
that existed in the original VGA cards exist in the new 3D cards. Depending on how the
video interface on DOS programs is written, they may benefit from having the video BIOS
shadowed.
Quick Summary #2: In today's accelerated video cards, the main
job of the video BIOS is to provide a program for the video processor (RIVA TNT2, Voodoo3,
etc) to run so that it can do its job. Interface between the video card and software is
done through a command set provided by the driver and really has nothing to do with the
video BIOS. The original BIOS function are still available to maintain backwards VGA
compatibility.
More on this can be found from his e-mail (Comment
#91). Check it out for more information.
For a final confirmation on why you should not shadow the video
BIOS, check out Steve Hauser's account
of his bad experience with video BIOS shadowing :-
A few years back (probably '96 or so) I had a Matrox
Millenium card and the BIOS I had at the time defaulted to shadowing enabled
for the VGA BIOS... *WELL* the Millenium had a larger than 32KB BIOS.
So, when I ran a BIOS flash, the first bit just copied into the shadow in
system RAM, while the rest hit the video card itself.
Needless to say, with the first 32KB block
missing, the BIOS of the card was completely corrupted and no longer
functioned. Already you can see how shadowing *CAN* get you in real
trouble with carelessly written flash software (that doesn't check for it
first). Now, I can't attest to any speed increases/decreases it may
have caused but here's the really pertinent part, what happened with the
card after it no longer had a BIOS....
It still worked! (mostly)... ALL 'DOS' video
modes were gone - total blank screen. But you can hear the computer beep and
then boot normally. Once the Windows GUI (with proper drivers) loaded, it
operated 100% normally. All video acceleration modes worked fine... *EXCEPT*
anything related to DOS (even a DOS window within Windows itself) was 100%
devoid of text. This includes the 'built-in' VGA (640x480x16 colours) safe
mode which also didn't work at all (since it doesn't use drivers).
So, apparently you are 100% correct in assuming
that modern video cards do not use the 'DOS addressable' BIOS for anything
except driverless VGA/EGA/text modes... Now, that's not to say 'BIOS
updates' are useless, as the actual BIOS of the card includes far more than
the little table DOS can see. It can include micro-code with patches for
problems (just like how motherboard BIOS updates can fix certain processor
problems).
I've given you at least one case now where
enabling BIOS shadowing can cause SERIOUS and permanent harm to the video
card itself... After the failed 'shadowed' flash, the card was never again
able to render DOS video modes or text; and further BIOS updates would not
work since they 'failed to detect current BIOS revision'.
If you are wondering why you should still update the video BIOS even
though it appears to be useless, the video BIOS doesn't only contain the DOS
video functions. The video BIOS on cards these days also contain code for
2D, 3D and video acceleration. Thus, using the latest video BIOS is likely
to boost performance and cut down on bugs. In addition, the latest drivers
may not work with older versions of the video BIOS. So, it's advisable to
keep updating the video BIOS whether you use real-mode DOS or not. Tip
thanks to Adam Nellemann! :)
Shadowing Address Ranges
(xxxxx-xxxxx
Shadow)
Options : Enabled, Disabled
This option allows you to decide if the memory block of an addon card in the address
range of xxxxx-xxxxx will be shadowed or not. Leave it as disabled if you don't have an
addon card using that memory range. Also, like Video BIOS Shadowing, there's no benefit in
enabling this option if you run Win95/98 and have the proper drivers for your addon card.
Ryu Connor confirmed this by sending me a
link to a Microsoft article about Shadowing BIOS
under WinNT 4.0. According to this article, shadowing the BIOS (irrespective of what
BIOS it is) does not bring about any performance enhancements because it's not used by
WinNT. It will only waste memory. Although the article did not say anything about Win9x,
it's the same for Win9x as it's based on the same Win32 architecture.
In addition, Ivan Warren warns that if you are
using an add-on card which is using some CXXX-EFFF area for I/O, then shadowing would
probably prevent the card from working because the memory R/W requests might not be passed
to the ISA bus.
|