内存映射视频意味着什么?例如,在x8086 Intel CPU上,它具有20位地址线。此内存映射是否意味着某些x8086地址线是硬连线到视频适配卡?
答案 0 :(得分:3)
例如,在x8086 Intel CPU上,它有一个20位地址线。
首先背景
(与大多数其他CPU不同)x86 CPU有两个地址范围:
实际的内存地址范围(例如" mov al, [ds:di]
"
此内存范围用于内存。
使用in
和out
说明访问的I / O地址范围
这"记忆"范围适用于I / O.
8086实际上有21条地址线:A19-A0和" M / nIO"。 A19-A0行包含实际地址和" M / nIO"如果"常规"访问内存或I / O范围。
在x86 PC(*)中,存储区中的0x00021(M / nIO = 1)是RAM,而I / O范围(M / nIO = 0)中的地址0x0021是中断控制器。
内存映射视频意味着什么?
"内存映射I / O"意味着某些设备使用"内存"地址空间而不使用" I / O"地址空间:
通过读取和写入内存地址0xA0000-0xBFFFF(取决于视频模式)来寻址视频适配器,而不是使用in
和out
指令。
(对于没有两个地址范围概念的CPU - 比如ARM - 有时也会说CPU使用内存映射I / O.这意味着所有I / O设备都像内存一样被寻址没有特殊的I / O寻址指令。)
在视频的情况下,这个词可能有更特殊的含义:
有些系统需要使用多个I / O访问来访问视频内存:
如果您想使用TMS9918视频芯片(在20世纪80年代流行)将数据写入视频存储器,您首先必须在视频RAM中写入指定地址的值,然后您必须编写实际数据。 CPU始终必须将两个值(视频RAM地址和数据)写入相同的地址 - 与应写入的视频RAM中的地址无关。
如果有人说视频不内存映射,我会理解系统有此行为。
在x86 PC(*)上不是这种情况:视频RAM中的某个地址对应于某个CPU地址。因此,如果要写入视频RAM中的10个不同地址,CPU只需将数据写入10个不同的地址。
(*)我不会写x86"系统"因为x86 CPU也用于移动和嵌入式设备。在这样的系统中,存储器布局(取决于电路外部 CPU)可能不同。
答案 1 :(得分:1)
不完全是从CPU或主板端硬接线,但所有内存访问都在扩展总线上可见。声称拥有地址范围的任何董事会都将回复处理器的读取或写入请求。
在扩展总线上安装专用RAM板并不常见,因为许多早期主板无法容纳整个640k。因此,视频板上的某些扩展RAM没什么吸引力。
此外,由于早期的PC在视频板上没有专用的图形处理器,主CPU无论如何都必须进行所有渲染,因此出于性能原因需要直接访问图形缓冲区。