System information
9 Benchmarks and Verification
9.1.1 Estimation of the VGA Data Throughput
A VGA card is not a simple device providing a linear framebuffer. Instead, a VGA screen
is a collection of several I/O and memory accesses to the VGA card. This section gives an
overview of VGA accesses on a running system. The test system #1 (see appendix G) was
equipped with an off-the-shelf VGA card. Additionally, a PCI Bus Analyzer was installed
on the system to scan the PCI bus for VGA accesses. Two states of the running system
were inspected: the BIOS Setup Utility and a booting Linux kernel.
VGA Requests of the BIOS Setup Utility
The PCI bus was analyzed while changing the BIOS menu item. Table 9.1 shows the result
of the PCI trace. The AMI BIOS setup utility runs in a graphic mode. The first two
accesses are I/O write requests to the Graphics Address and Graphics Data registers. The
write access to I/O port 0x3CF selects the Bit Mask Register. This register is used to mask
the bits inside one byte of data. Depending on the VGA write mode, a bit value of zero
means that the related bit of the VGA memory write request is not saved to the video
plane. The next access is a read of the VGA memory. This read request fills the four VGA
read latches which can be used to copy data from one location to another. After a time of
720 ns the BIOS writes to the same location inside the VGA memory. The BIOS repeats the
sequence of setting the Bit Mask Register, reading from and writing to the video memory
until the whole screen is updated.
Operation Address Data Size Value Idle Time
I/O Write 0x3CE 1 byte 0x08 810 ns
I/O Write 0x3CF 1 byte 0xFF 810 ns
Memory Read 0xA0000 1 byte 0xFF 720 ns
Memory Write 0xA0000 1 byte 0x07 120 ns
Table 9.1: Typical periodical VGA access sequence of the AMI BIOS running a graphic
mode. The first I/O write (to 0x3CE) is done once only. It sets up the target
register for the I/O writes to port 0x3CF. The next three accesses are repeated
periodically, whereas the memory addresses and values are changed. The idle
time is the period between two VGA accesses.
VGA Requests of a Booting Linux Kernel
Table 9.2 shows a VGA request queue of a booting Linux kernel. Common Linux kernels
switch the VGA card into a text mode. In text mode the video memory contains ASCII
characters instead of pixel data. The first VGA access shown in table 9.2 is a write of
one character to the address 0xB8000. The second byte transferred is the attribute of the
character. In this process, the ASCII character 0x20 represents the space character and
the attribute of 0x07 specifies a white font on a black background. Afterwards, the host
computer changes the position of the text cursor. The first I/O write selects the Cursor
114