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




  

相关话题

  电脑拥有 128/256 GB 内存是种怎样的体验? 
  为什么 Windows 比 Linux 的文件搜索慢很多? 
  rtx3060最低需要什么CPU搭配? 
  HBM 存储有可能成为未来 CPU 平台的一个主流选择吗? 
  intel 12代大小核会不会重蹈推土机覆辙? 
  用Android系统做出的游戏主机为何与XBOX、PS的游戏体验相去甚远? 
  都说寄存器比内存快,但是为什么有些时候运行显示的是寄存器更慢? 
  讯景回应「被海关查获违规进口显卡」,不存在「矿卡翻新」及二次销售行为,可信度高吗? 
  请问从技术角度来看是鸿蒙操作系统,木兰编程语言,方舟编译器哪个技术水平更高一些? 
  如何评价英伟达30系显卡及其售价? 

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





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