我读到CPU有少量内部存储器用寄存器操作。这个内存对每个程序都是唯一的吗?
如果有很多程序正在运行,那么CPU是否会耗尽这个内存?
答案 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逻辑都存储在特殊的高速存储器中,这就是微码层。