百科问答小站 logo
百科问答小站 font logo



为什么显卡在内存中的映射是0b8000H? 第1页

  

user avatar   bei-ji-85 网友的相关建议: 
      

显存基地址虽然是人为确定的,但真要追究原因的话,还是可以找到一些原因的。

首先,16位时代8086的寻址范围是0000:0000~FFFF:000F,最早划给RAM的区域是640KB,范围0000:0000~9FFF:000F,这在第一代IBM x86 PC时代基本就定下来了。剩下的区域要划给BIOS和硬件使用。当时的设计思路是,BIOS的东西尽量往后放,所以BIOS的ROM代码被放到了F000段这里。

然后就是决定显存放在哪的问题。

可以使用的区域包括A000:0000,B000:0000,C000:0000,D000:0000,E000:0000这几大段内存。

先说看A000段:这段内存有一个问题,就是A000段会跟9FFF段有重叠,也就是9FFF:0010~9FFF:FFFF,可能是为了防止有内存重叠,设计的时候把显存往后挪一段,也就是B000这一段。

早期的显存基地址是B0000而不是B8000,早在1981年最早的IBM PC机出来的时候,显示器还是单色的,显存只有4KB(80*50),占用的内存范围是B0000~B0FFF。

这里需要特别提一句,显卡上是有RAM也有ROM的,RAM映射到了B000段上,ROM映射到C000段(实际范围是C0000~C7FFF),当时因为外设还不多(硬盘都属于罕见的设备),所以内存地址空间可以说是随便用,虽然显卡RAM只有4K,ROM只有8K,但各自占用了很大一段的地址空间。

到了1983年,显卡技术进一步发展,显示器可以显示彩色字符了,但考虑到兼容性的问题,需要兼容原来的单色显卡,而C000段已经被用掉了,B000段还有很多剩余空间,于是B000段被拆成了两部分,B000~B7FF段兼容单色显卡显存,B800~BFFF段留给彩色字符显存。

因为现在显卡已经默认工作在彩色字符模式下了,所以B800就成了默认的显存基地址了,实际上早期的基地址是B000而不是B800。事实上现在的很多显卡仍然能通过配置切换到单色模式,切换过去以后,显存的基地址就是B0000了。

再后来,显卡发展出VGA模式,显卡的显存也增长到了256KB,而这个时候因为BIOS的东西太多,硬件数量也变多了,已经把D000, E000都占了,此时可用的地址空间只剩下A000,所以A000就用来做VGA的图形模式的显存了。

至此,A0000以后的地址空间就基本确定下来了:

A0000~AFFFF: VGA图形模式显存空间
B0000~B7FFF: MDA单色字符模式显存空间
B8000~BFFFF: CGA彩色字符模式显存空间
C0000~C7FFF: 显卡ROM空间(后来被改造成多种用途,也可以映射显存)
C8000~FFFFE: 留给BIOS以及其它硬件使用(比如硬盘ROM之类的)。




  

相关话题

  配一台能带动 99% 的游戏的主机至少多少钱? 
  中央处理器(CPU)有没有假货? 
  会不会有两个中断绝对同时发出,cpu会如何处理? 
  为何目前有eGPU(外接显卡), 而没有eCPU(外接中央处理器)? 
  如何分辨显卡是矿卡非矿卡? 
  Linux Kernel 4.9 中的 BBR 算法与之前的 TCP 拥塞控制相比有什么优势? 
  GPU核心为什么会以显卡这种形式进行销售? 
  Windows系统中软件的默认安装目录为何是Program Files这个名字? 
  请问i7和i9的区别是什么(希望尽量通俗易懂)? 
  女孩子实在不会配电脑,从小到大每次买电脑都被坑,该怎么办? 

前一个讨论
为什么启用AHCI还要分装系统前和装系统后?
下一个讨论
64位操作系统(CPU)如何兼容32位程序/软件?请看详情。?





© 2025-03-25 - tinynew.org. All Rights Reserved.
© 2025-03-25 - tinynew.org. 保留所有权利