The BIOS Optimization Guide

 






Comment #91

After reading your BIOS guide, which is quite well done BTW, and the ensuing questions about video BIOS and shadowing, I though I would try and shed some light on the matter. The confusion lies in the fact that we are actually dealing with two separate issues. One is accelerated cards (2D or 3D) and the other is none accelerated things, like DOS.

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.

Now for the qualifiers:

1. As far a running a DOS app inside a Windows box, I have no idea how things like BIOS shadowing are handled. But, in general I think that if performance is a problem in that case, there are many other things to be looked at before worrying about your video BIOS.

2. Someone is bound to pose the following question: If the BIOS is shadowed, will the video processor run of the system memory? The answer is I don't know. Flash ROMs have access times around 120ns which is way too slow to run at the current clock speeds of 150MHz+. I don't know what the solution is. You would have to ask someone who designs accelerated board, and I don't know what they will tell you. I doubt that the video processor would run off of a shadowed version of its BIOS. If it did you are open to all the problems of a multiprocessor system, and to make it worse, the processors are running at wildly different speeds. Bus and memory contentions become a problem.

3. It is not and never has been my job to design video cards. This is all from stuff I have learned along the way. I don't think there are any glaring errors, but I am open to corrections. As a note, I am a computer systems engineer, and have a pretty fair background is computer hardware.

William Patrick McNamara


Hello William,

That's definitely the best explanation I have ever read about video BIOS and its shadowing!

The video BIOS isn't really large. Shadowing it will only take 32KB of system memory. That shouldn't cause you to run out of system memory though it would still be a waste of memory.

Anyway, this is definitely going to be part of the BIOS Optimization Guide. Thanks for that great contribution! :)

Adrian Wong
Adrian's Rojak Pot
http://www.rojakpot.com/
http://www.adriansrojakpot.com/


Comment #92

I have to diagree with your comments about shadowing. Just to clear things up.

Shadowing a video BIOS uses reserved area of memory which nothing, not even Windows can write to. So it is safe to shadow your video or SCSI or any other BIOS. This will improve access time to BIOS calls that usually only occur under DOS. But will not improve performance under Windows. However it is perfectly stable and safe to shadow your Video BIOS.

A BIOS will still use the same memory addresses whether it is shadowed or not. It just means it will use faster main RAM rather than slower onboard Video BIOS ROM.

Keep up the good work

I-store Windsor


That's correct if you are shadowing video BIOS but if you are not, then the memory area is available for use by Windows. Just like the Microsoft article said, it's just a waste of memory... unless, of course, you run a lot of real mode DOS applications / games.

Adrian Wong
Adrian's Rojak Pot
http://www.rojakpot.com/
http://www.adriansrojakpot.com/


Comment #93

Hi! You wrote in your BIOS guide:

> Also, in order for any of those DMA modes to work (including the UltraDMA modes), you will have to > enable DMA transfer via the OS. In Win9x, that can be done by ticking the DMA checkbox in the     > properties sheet of that IDE drive.

My system: MB : Microstar 6163Pro, HARD DISK : IBM Deskstar GXP 14.4GB and WIN98SE.

When I enable the DMA transfer it seems to slower my hard drive data transfer. Copying from drive to drive example 50MB it takes three times (or more) longer to copy.

I'm confused about this, I saw elsewhere the same information: UltraDMA is enabled if you enable it from Windows. Motherboard and the IBM hard disk both support UDMA/33. I noticed a little processor time is freed with DMA checked. This isn't a motherboard and a drive problem. Same thing was Microstar 6119 motherboard and Quantum Fireball 3GB - both supports UDMA/33. All the BIOS settings should be correct. Can you explain this for me?

By the way your BIOS guide is excellent!

Regards,

Sami Waurio


Hello Sami,

I'm not sure what chipset your motherboard is based on but if it's not based on an Intel 440LX/BX/ZX chipset, then it's very possible that the bus mastering driver you are using is at fault. Win98 drivers for non-Intel 440LX/BX/ZX IDE controllers aren't particularly well-optimized drivers. So, it's best to use the latest IDE bus mastering driver from the chipset manufacturer.

If you are using an Intel 440LX/BX/ZX based motherboard, check and see if Win98 installed the correct driver for you. The IDE controller listed should be Intel 82371EB PCI Bus Master IDE Controller and not any one of those generic controllers like Standard Dual PCI IDE Controller, Standard ESDI/IDE Controllers, etc...

Just remember one thing, what you are doing when you enable DMA mode is that you are activating the bus mastering driver that Win98 installed for your motherboard's IDE controller. Also, you'll need to keep in mind that a bus mastering driver only removes the need for the CPU to handle IDE transactions, thus freeing up the CPU to do other work. It does not improve IDE throughput. So, the time needed for file transfers to and from a hard disk shouldn't change much.

Adrian Wong
Adrian's Rojak Pot
http://www.rojakpot.com/
http://www.adriansrojakpot.com/


Comment #94

Hi,

Excellent guide. For BIOS IDE HDD block mode. I have Win98 with a Matrox Millenium MGA 200 video board?? Was wondering if I enable this mode I would cause files corrupting?

Thank you

Chas @ Charles Dawson


Hello Chas,

As I have stated in the guide, data corruption due to IDE HDD Block Mode is only possible if you are using WinNT. It has absolutely nothing to do with your video card. Using the MGA 200 won't affect your data if you enable IDE HDD Block Mode.

Hope that helps you some! ;)

Adrian Wong
Adrian's Rojak Pot
http://www.rojakpot.com/
http://www.adriansrojakpot.com/


Comment #95

Should I enable PNP OS if I'm using Win98 ? Also, how do I slow down my HD in the BIOS? I have the ABIT BH6.

Phillip


Well, you should enable PnP OS since Win98 is a PnP OS. That will enable Win98 to take over the management of device resources from the BIOS.

Why would you want to slow down the hard disk? Hmm... you can't really slow down the hard disk since there's no way to slow down its spindle speed and then again, who would want to do that? But what you can do is slow down the IDE interface speed by using a slower protocol, like PIO Mode 4 instead of UltraDMA 33.

You can do so in the Integrated Peripherals section of the BIOS by disabling UltraDMA mode or reducing the PIO Mode of the hard disk. Check out the Integrated Peripherals section of this guide for more information.

Adrian Wong
Adrian's Rojak Pot
http://www.rojakpot.com/
http://www.adriansrojakpot.com/


Comment #96

I have 128MB system RAM.

I currently have my AGP aperture size set at 64MB. Should I increase it or leave it as it is?

What is the best AGP aperture size for my computer? I use it for gaming........

Adrian


Hello Adrian,

Check out Comment #73. I think it answers your question perfectly.

Hope that helps you some! :)

Adrian Wong
Adrian's Rojak Pot
http://www.rojakpot.com/
http://www.adriansrojakpot.com/


Comment #97

First allow me to state that I found your BIOS OPTIMIZATION GUIDE highly valuable. Many thanks to you for having written such a guide.

Recently, I purchased a Motorola SM56K PCI Speakerphone modem. Previously I had a U.S. ROBOTICS 33.6 ISA modem which operated flawlessly [the 56K was purchased for speed]. This new Motorola modem seems to crash my system frequently. I am thinking that it is, perhaps, related to a BIOS setting.

I am running Award BIOS. Under ROM PCI/ISA BIOS Power Management Setup, I have the listing "Modem use IRQ:". The options permitted are to set it to use an IRQ setting of 3,4,5,6,7,8,9,10,or 11 or to choose NA. What do you recommend that this be set at?

Under ROM PCI/ISA BIOS PCI & ONBOARD I/O SETUP, there are these listings:

"BIOS Auto-Config. PCI IRQ:"
Available options are "Disabled" or "Enabled"
Which do you recommend?

"PCI IRQ Activated by:"
Available options are "Level" or "Edge"
Which do you recommend?

Thank you in advance for your anticipated cooperation. I will be looking forward to hearing what you recommend these settings to be.

Respectfully,

Dawn D.


Hello Dawn,

For your modem, set it to use any of the free IRQs you have.

For the BIOS setting of BIOS Auto-config PCI IRQ, normally Enabled works just fine unless you need to manually set the IRQ for your PCI devices.

As for PCI IRQ Activated by..., use Level. It allows you to share IRQs among devices that support it. However, if you have a PCI device that does not support IRQ sharing, use Edge instead.

Hope that helps you some! :)

Adrian Wong
Adrian's Rojak Pot
http://www.rojakpot.com/
http://www.adriansrojakpot.com/


Comment #98

Hi,

Sorry to bother you but I saw something on your BIOS guide about ACPI, and I can't find any info about what this is, and if I should enable it on my system. I have Win 98 installed, and my MSI motherboard does support it. I know how to turn it on, (thanks to your site) but I have know idea what it
does :/ Sorry if it seems like i'm being stupid, and wasting your time, but if I don't ask I will never learn.

Thanks for taking the time to read this :)

"CuTThroaT" Jake


Hello Jake,

ACPI (Advanced Configuration and Power Interface) is a power management standard created by Intel, Microsoft and Toshiba. It allows your operating system to take full control of your computer's power management and PnP functions. The advantages of ACPI include :-

  • PnP (Plug and Play) and APM (Advanced Power Management) functionality can now be handled by the operating system, which allows easier changes of settings, especially for power management.
  • control of the power management of various devices in the system (requiring ACPI-aware drivers)
  • a Soft-Off feature which enables the operating system to power off the system
  • support for multiple wake-up events (in which different devices can be used to wake up the computer during different non-operational states)
  • support for multiple effects of a power and sleep switch on the front panel of the computer (i.e. pressing the power switch for more than four seconds when the computer is running immediately puts it into the suspend mode).

As you probably can see, ACPI is the way to go, if you are equipped to support it. Remember, two things are required for ACPI to work. First of all, your operating system must support ACPI and currently, only Win98 and Win2K support it. The second thing is both hardware and software (drivers) of all devices and addon cards in your computer must support ACPI. So long as you have an ACPI-aware OS and devices that support ACPI, you can set ACPI to take over the PnP and Power Management functions that previously relied on the BIOS.

Hope that helps you some! :)

Adrian Wong
Adrian's Rojak Pot
http://www.rojakpot.com/
http://www.adriansrojakpot.com/


Comment #99

Re: Ultra ATA access under NT 4.0

Apparently with certain chipsets you can enable Ultra ATA under NT 4.0 (I assume this also means 32 bit access and block transfer enabled).

See: http://support.intel.com/support/chipsets/storagedrivers/ultraATA/

Robert T. White


Hello Robert,

Ultra-ATA or UltraDMA is completely different from 32-bit access and block transfer. UltraDMA specifies for 33MB/s or 66MB/s transfer rates from the IDE device to the IDE controller. 32-bit access, on the other hand, specifies whether transfer from the IDE controller to the processor is done in 16-bits or 32-bits per transaction while block transfer enables the reading of multiple blocks using only a single interrupt.

The Intel document only states that the Intel bus mastering driver supports WinNT 4.0 and has nothing to do with 32-bit disk access or block transfer.

Hope that helps clear things up! :)

Adrian Wong
Adrian's Rojak Pot
http://www.rojakpot.com/
http://www.adriansrojakpot.com/


Comment #100

Adrian,

Your guide has helped me out quite a bit and I more or less understand the workings of my BIOS. However there is one point I would like you to cover that I have not been able to get a handle on from any BIOS related site or article, namely, ‘Assign IRQ by Level/Edge’. I think the default is Level but I really don’t understand the terminology. What is the difference between Level and Edge and are there any inherent advantages or disadvantages to these two settings.

Apart from that I have no complaints with your guide or my system although for some reason VIA’s AGP driver doesn’t seem to like either DirectX 7 or my ATI Xpert98 AGP. But that’s another kettle of fish altogether! Keep up the good work and remember Rome wasn’t built in a day! 

Richard Jeffers


Hello Richard,

I did not add the setting because I've not seen it in quite some time now. Perhaps I should just add it into the guide. In any case, the setting Assign IRQ by Level / Edge pertains to the method by which the IRQ of the PCI device is activated.

When PCI devices were just introduced, the setting that everyone was asked to use was Edge because no PCI device back then supported IRQ sharing. However, now that almost every PCI device supports IRQ sharing and IRQs are usually in shortage, it's best to set it as Level so that your PCI devices can share IRQs.

Adrian Wong
Adrian's Rojak Pot
http://www.rojakpot.com/
http://www.adriansrojakpot.com/

Comments?

If you have a comment or two about this article, please post them here.

Thanks for your time and I hope you enjoyed the article! :)

 

 
 

 

 
     
   

 

 
   

 
     
 

                   

 
   

 

 
 
Last Updated 28-11-2001

All trademarks used are properties of their respective owners.
Copyright © 1998-2000 Adrian Wong. All rights reserved.

 
Visit the new Tech ARP @ http://www.techarp.com/ !