最近笔试遇到了这个题目,补漏一下
在单核处理器Cache中,Cache line有2个标志:dirty标志和valid标志,它们描述了Cache(缓存)和Memory(内存)之间的数据关系(数据是否有效、是否被修改);而在多核处理器Cache中,多个核会共享一些数据,因此就有了MESI协议,这个协议描述了多个核之间的共享状态。
MESI协议中,每个Cache line有4个标志,可用2个bit表示,它们分别是:
标志 | 描述 |
M(Modified) | 这行数据有效,但数据只在本Cache中被修改了,和内存中的数据不一致,数据只存在于本Cache中,其他Core的Cache中的数据变为无效(Invalid) |
E(Exclusive) | 这行数据有效,数据和内存中的数据一致,数据只存在于本Cache中 |
S(Shared) | 这行数据有效,数据和内存中的数据一致,所有Core的Cache共享同一个数据,数据存在于很多Cache中 |
I(Invalid) | 这行数据无效 |
M(Modified)和E(Exclusive)状态的Cache line,数据是独有的,不同点在于M状态的数据是dirty的(和内存的不一致),E状态的数据是clean的(和内存的一致)。
S(Shared)状态的Cache line,数据和其他Core的Cache共享。只有clean的数据(和内存一致)才能被多个Cache共享。
I(Invalid)表示这个Cache line无效。