【发布时间】:2017-07-15 01:57:06
【问题描述】:
【问题讨论】:
-
CPU 和内存缓存是相同的......当然,除非您指的是寄存器和缓存。如果是这样的话...superuser.com/questions/208932/…
标签: java caching concurrency
【问题讨论】:
标签: java caching concurrency
“内存缓存”似乎只是在谈论内存中的任何地方。有时这是存储在磁盘或外部的数据缓存。这是一个软件缓存。
CPU 缓存是一种硬件缓存,速度更快、更本地化但更小。
【讨论】:
根据Wikipedia;
在计算中,缓存是一种硬件或软件组件,用于存储 数据,以便可以更快地处理未来对该数据的请求
所以基本上它是您存储数据的位置,以便下次您需要数据时可以更快地访问它。这意味着缓存需要位于比原始位置更快的位置。
通常,硬盘用于以持久方式存储大部分数据。这是计算机系统中最大的数据存储,通常速度很慢。
然而,所有的“工作”都是由 CPU 完成的。因此,为了处理数据,CPU 需要首先读取数据,然后处理它,然后将其写出。由于 CPU 的内存/数据寄存器非常有限,因此它会进行大量的读写操作。
理想情况下,您的 CPU 应该有足够大的数据寄存器来存储您需要的所有内容。但是CPU上的内存很贵,所以不实用。
因此,您拥有主内存,应用程序在运行时临时存储一些数据以使其更快。
应用程序的工作方式意味着您往往拥有大量被非常频繁地访问的数据。通常被称为热点数据。
所以缓存的目的就是把这些热点数据存储起来,让你在需要的时候可以更快更方便的参考和使用。
因此,您拥有的数据越接近 CPU 内核,访问速度就越快,因此性能也会提高。但它越贵。
它可能会因 CPU 架构而略有不同(并且随着时间的推移而变化),但通常每个内核都有一个 L1 和 L2 缓存。 L3 高速缓存在多个内核之间共享。一级缓存也经常分为数据缓存和指令缓存。
因此,您的 CPU 缓存将包含当时访问次数最多的数据,因此与从中获取数据的主内存或 HDD 存在某种关系。但是因为它很小,如果你做其他事情,缓存会很快变成使用其他数据,或者如果在后台运行其他事情。
因此实际上不可能控制 CPU 的缓存。另外,如果你这样做了,你会有效地减慢其他一切(包括操作系统),因为你拒绝他们使用缓存的能力。
每次您的应用程序在主内存中读取和存储数据时,它都会有效地创建自己的缓存,假设您随后从该位置访问数据,而不是每次需要时都从磁盘(或其他位置)读取数据.
所以这可能意味着它的一部分也在 CPU Cache 中,但不一定。因为您可以从应用程序的主内存中获取数据,但您的应用程序没有做任何事情,或者很长时间没有访问该数据。
还请记住,与主内存中的数据相比,CPU 缓存中的数据非常小。比如Broadwell Intel Xeon芯片有;
【讨论】:
详细来说,您的问题与计算中使用的硬件和软件有关。
缓存
这只是一个通用术语,用于指代经常访问的数据集。
在计算中,缓存 /ˈkæʃ/kash,1 是一种硬件或软件组件,用于存储数据,以便可以更快地处理未来对该数据的请求。
内存缓存
很简单,就是缓存频繁访问的数据,存储在相当快的介质中,例如在 RAM 或磁盘驱动器中。
CPU 缓存
这是一块类似于内存的 RAM 小块,物理上是 CPU 的一部分。它通常没有很多内存。
例如Intel Core 17-920 有 8MB 的缓存 Source
此缓存的目的是存储 CPU 经常使用的数据以加快传输时间,因为 CPU 缓存在物理上更靠近处理器,而 RAM 更接近。
【讨论】: