每个程序的CPU内存

时间:2014-01-18 19:33:29

标签: assembly cpu

我读到CPU有少量内部存储器用寄存器操作。这个内存对每个程序都是唯一的吗?

如果有很多程序正在运行,那么CPU是否会耗尽这个内存?

4 个答案:

答案 0 :(得分:2)

我假设你指的是registers

每个CPU内核只有一组寄存器。当操作系统改变处理器上正在运行的进程时,它会将寄存器的状态保存在主RAM存储器中,并在重新开始执行时恢复它们的值。

你必须记住,一个CPU核心上的程序并不是并行执行的,它们只是运行一点,并且切换得如此之快以至于似乎与人类并行。这就是为什么只能有一组寄存器。

根据评论:阅读更多here

答案 1 :(得分:0)

通常,CPU只有一组寄存器。

为了在许多进程中使用它们(正如你在问题中提到的那样''程序'),操作系统会在切换到另一个进程时保存当前进程的整个上下文。

此过程称为Context-Switch,它包括保存这些寄存器的值。

当OS切换回进程时,它会使用先前的值重新加载寄存器。

答案 2 :(得分:0)

您可能正在考虑cache,所有CPU都有几KB到几MB附近,具体取决于级别(L1缓存,L2缓存等)。理想情况下,CPU可以使用缓存中的数据,因为访问速度比主存储器快几个数量级。但由于它们太小,它们确实很快就会填满。如果CPU无法在一级缓存中找到所需内容,则会进入下一级别。如果它没有找到可用缓存最高级别的数据,它将转到主内存,将该数据交换到缓存的某些部分,然后继续工作。

有各种算法用于确定如何管理缓存中的数据,交换内容等等。

答案 3 :(得分:0)

实际上在像intel x86这样的大型CPU上,寄存器以及指令实现和内部CPU逻辑都存储在特殊的高速存储器中,这就是微码层。

看:http://en.wikipedia.org/wiki/Microcode