gpt4 book ai didi

memory - 为什么从 Memory & I\O 获取数据很昂贵?

转载 作者:行者123 更新时间:2023-12-05 00:25:21 32 4
gpt4 key购买 nike

当我在任何地方阅读基于操作系统的书籍时,考虑到时间限制和开销很高,从内存和 I\O(子系统)获取数据是昂贵的,这就是为什么在某些硬件制造商中提供一些其他方式来访问它们,如ARM7 some ISAs像(加载和存储)和为 RTOS 制作的设备驱动程序考虑到这一事实(使用 RTDM)比较 GPOS 也是不同的类型,所以如果这一切都是真的,那么我想知道这个事实的较低级别的细节,为什么内存和 i\o 事务是昂贵的。

最佳答案

从内存和 I/O 设备检索数据是“代价高昂的”,因为涉及的步骤很多,并且每一步都会增加少量延迟。以下是从内存中检索值所需步骤的通用示例:

1) 从程序内存空间中数据的虚拟地址开始

2)将虚拟地址翻译成内存物理地址

3)检查缓存中的值

4) 如果数据不在缓存中,则从内存 Controller 发出请求

5)内存 Controller 将物理地址分解为行、列、组和位地址

6) 内存 Controller 从 DRAM 读取数据 - 从 DRAM 实际检索数据的行为非常复杂,并且有其自己的一系列步骤,可能需要时间。见 Wikipedia entry for DRAM .

7)将数据返回给CPU

请记住,在不同硬件单元之间进行的每一位通信都是通过总线完成的,总线的时钟速度总是比 CPU 的标称频率慢。

甚至这一系列步骤也大大简化了事情。例如,第 2 步从查看 translation-look-aside-buffer (TLB Wikipedia Entry) 开始。 ,但如果所需的转换不再在缓冲区中,则必须执行第二次内存提取以获取所请求数据的物理地址。

此外,您的系统中只有这么多可用的 RAM,因此如果您想要的数据有一段时间没有使用,它可能已从 RAM 中删除并临时存储在您的硬盘上(称为“交换”)。现在,您认为简单的 RAM 访问实际上是首先访问您的硬盘。顺便说一下,这种交换也可能发生在将虚拟地址转换为物理地址的表中,因此检索一段时间未使用的单个字节实际上在最坏的情况下会变成两次磁盘访问。

说到硬盘,I/O 设备就完全不同了。该术语本身涵盖了各种各样的设备:RS232 串行端口、USB、网络、外部 CD/DVD 阅读器、外部硬盘和固态驱动器,列表是无止境的。它们每个都有不同的属性和功能,使它们比其他的更快或更慢,但关键是它们都不能像您的 CPU 消耗数据那样快,因为它们自己的属性(例如等待硬盘盘片旋转) ),对总线速度和数据通过的转换层数量的物理限制。因此,每次您的 CPU 从 I/O 设备发出请求时,在收到回复之前可能会经过数十、数百甚至数千个时钟周期。

您的程序可能需要等待来自这些来源的回复的时间是它们被认为“昂贵”的原因。

关于memory - 为什么从 Memory & I\O 获取数据很昂贵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24675499/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com