|
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/ |