百科问答小站 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之类的)。




  

相关话题

  华为要怎么做才能打破“鸿蒙OS套壳安卓”的言论? 
  2021年显卡疯涨,何时能降价? 
  想换高频内存,该选择升级什么板 U 套餐? 
  如何看待鸿蒙os里全是android痕迹? 
  要想完全放弃Windows操作系统而使用 Linux需要多少勇气? 
  2080s换4070有必要吗?提升有多少? 
  我把显卡卖了现在又想玩csgo了,我是卓威240的显示器? 
  操作系统内核态和用户态切换落实到代码层面和运行层面的本质是什么? 
  台积电表示到 2025 年将拥有 2 纳米技术芯片,背后底气何在? 
  为什么游戏本 30 瓦- 40 瓦的功耗就可以达到全核 4.1 GHZ? 

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





© 2024-12-25 - tinynew.org. All Rights Reserved.
© 2024-12-25 - tinynew.org. 保留所有权利