最近在学习《Java并发编程的艺术》这本书的时候得知:缓存的基本单位是缓存行,缓存行有64位的(还有其它位数的),如果是64位的,即代表可以缓存8个long类型的数据。但是如果将缓存数据写回内存的时候,缓存是如何知道这些数据原先是从哪里(即内存地址)取到的?
也就是说,如果缓存的是数据,那么它怎么知道写回内存的地址?如果缓存的是地址,那么缓存操作的数据实际上还在内存中,缓存了有啥用?
望解答
最近在学习《Java并发编程的艺术》这本书的时候得知:缓存的基本单位是缓存行,缓存行有64位的(还有其它位数的),如果是64位的,即代表可以缓存8个long类型的数据。但是如果将缓存数据写回内存的时候,缓存是如何知道这些数据原先是从哪里(即内存地址)取到的?
也就是说,如果缓存的是数据,那么它怎么知道写回内存的地址?如果缓存的是地址,那么缓存操作的数据实际上还在内存中,缓存了有啥用?
望解答
基本单位是缓存行,但是CPU直接调用对象不是缓存行,而是寄存器,寄存器操作缓存行。不同寄存器里面缓存的内容是不一样的。此外还有总线与外界进行沟通。