首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >什么是内存映射视频?

什么是内存映射视频?
EN

Stack Overflow用户
提问于 2018-01-20 16:49:18
回答 2查看 1.2K关注 0票数 1

内存映射视频意味着什么?例如,在x8086 Intel上,它有一个20位的地址行。这个内存映射是否意味着一些x8086地址线是硬连接到视频适配器卡上的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-20 23:08:39

例如,在x8086 Intel上,它有一个20位的地址行。

一些背景第一

(与大多数其他CPU不同) x86 CPU有两个地址范围:

  • 实际内存地址范围(例如,由"mov al, [ds:di]“访问) 此内存范围用于内存。
  • 使用inout指令访问的I/O地址范围 此“内存”范围用于I/O。

8086实际上有21条地址线: A19-A0和"M/nIO“。A19-A0行包含实际地址,"M/nIO“行包含访问”常规“内存或I/O范围的信息。

在内存区(M/nIO = 1)的x86 PC (*)地址0x00021中是RAM,而I/O范围内的地址0x0021 (M/nIO = 0)是中断控制器。

内存映射视频意味着什么?

“内存映射I/O”是指某些设备使用“内存”地址空间而不是使用"I/O“地址空间进行寻址:

视频适配器是通过读写内存地址0xA0000-0xBFFF(取决于视频模式)来寻址的,而不是使用inout指令。

(对于CPU完全没有两个地址范围的概念-类似ARM -有时还会说CPU使用内存映射的I/O,这意味着所有I/O设备的寻址都像内存一样,没有关于I/O寻址的特殊指令。)

在视频中,这个词可能有一个更特殊的含义:

在有些系统中,必须使用多个I/O访问来访问视频内存:

如果您想使用TMS9918视频芯片(1980年代流行)将数据写入视频存储器,那么首先必须编写一个值,指定视频RAM中的地址,然后编写实际数据。CPU总是必须将两个值(视频RAM地址和数据)写入相同的地址--独立于应该写入的视频RAM中的地址。

如果有人说视频是而不是内存映射的,我就会理解系统有这种行为。

在x86 PC (*)上,情况并非如此:视频RAM中的某个地址对应于某个CPU地址。因此,如果您想在视频RAM中写入10个不同的地址,CPU只需将数据写入10个不同的地址。

(*)我不编写x86“系统”,因为x86 CPU也用于移动设备和嵌入式设备。在这样的系统中,存储器布局(取决于CPU外部的电路)可能有所不同。

票数 3
EN

Stack Overflow用户

发布于 2018-01-21 03:19:01

不完全是硬连线从CPU或主板侧,但所有的内存访问是可见的扩展总线。任何声称拥有地址范围的板都会回复来自处理器的读或写请求。

在扩展总线上有专门的RAM板并不少见,因为许多早期的主板不能容纳整个640 K。因此,没有魔术与一些扩展RAM位于一个视频板。

此外,由于早期的PC机在视频板上没有专用的图形处理器,主CPU无论如何都必须完成所有的渲染,因此出于性能原因,需要直接访问图形缓冲区。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48362618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文