AMBA ACE Protocol Chapter1

C1.2.2 Coherency Model

Cache line被定义为连续的byte,并且起始地址与cache line的size align;

没有必要持续维护memory的更新。当Shareable状态的数据不再被保存在cache时,保存到memory中即可

ace protocol允许master决定cache line是唯一的一份还是其他的master也有拷贝:

如果是唯一的,master可以随意更改,不需通知;如果是共享的,那么master需要通知其他master。

C1.2.3 Cache state Model





Unique Clean:只有当前cache有这个cache Line,并且是clean的;

Unique Dirty : 只有当前cache有这个cache line,并且dirty,并且当前cache line一定要被写回主存;

Shared Clean : 当前cache line 被共享,并且clean;但是不知道这个cache是否已经被修改过,这个master也不负责更新这个line到主存;

Shared Dirty:当前cache line可能被共享,并且已经被修改,这个line一定要被写回到主存;

注意:

1. 如果一个cache新取了一行,如果另一个cache也有这一行,并且是unique状态,那么一定要改为share状态;

2. 如果一个cache 放弃了一行,那么它不需要通知其他包含这行的cache,所以说,可能会存在share状态的cache只在一个cache中有;

3. 如果一个cache被存到主存中,那么这个cache一定要是dirty状态;

4. 如果一个cache被存到主存中,并且在多个cache中存在,那么一定只在一个cache中是dirty状态。

C1.3 Channel overview

AXI4改变的信号

AWUNIQUE 信号只在component支持 WriteEvict时使用;

C1.3.2  ACE增加的信号

snoop address(AC) 是cache master的输入,用于提供地址以及控制信息的;

snoop response(CR)是cache master的输出,提供对snoop 传输的相应。每个snoop传输都有一个单一的响应,这个相应意味着是否一个相关的数据传输在cd channel上被expected。

snoop data(CD) 是一个选择性的master输出端口。如果一个读或者写snoop 传输会产生,当这个master有可用的数据的copy的时候。


C1.3.3 acknowledge signal 应答信号


应答信号用于暗示master已经完成了读或者写传输

C1.3.4  Channel 使用示范

C1.4 Transaction overview

C1.4.1 Non-snooping transaction

非监听的传输用于处理不在其他master的cache中的数据,传输类型包括: Non-shareable/ Device .

提供了两种传输类型,ReadNoSnoop和WriteNoSnoop

C1.4.2 Coherent transactions

(1) load operation from shareable localcations

可以采用一下三种snoop transaction

1. Readclean: 只接受clean类型的cache line,不接受dirty的,不负责将数据写回;用于没有写回功能或者是写直达类型的master;

2. ReadNotSharedDirty: 接受任何类型的cache,除了SharedDirty类型。即只接受clean的,或者是唯一dirty的。

3. ReadShared : 可以接受任何类型的。

对于这上面三种中的每一种,master都可以传输一个dirty类型的cache line,即使这个line不会被接受。这种情况下,interconnect单元将会负责将这个dirty line写回到主存中。

如果一个cache包含snoop transaction中的一份拷贝,协议建议这个cache传输这个cacheline。interconnect将会负责将数据传输给发起操作的master。

如果一个cacheline在唯一状态下提供了这一行,那么它需要转变到share 状态。

(2)Store operation to shareable locations

提供了以下三种用于失效其他cache中相关line的拷贝

1. ReadUnique : 当只store 一line的部分byte时使用,当master没有完整的一行拷贝时,他将会获取一个cache line的拷贝,并且将其他的失效;

2. Clean Unique :  当只store 一line的部分byte时使用,当master有完整的一行拷贝时,他将会失效其他的所有拷贝。如果它发现有一个cache把这line标记为脏,那么需要确保这line已经被写入到主存里;

3. Make Unique: 当存储完整的一行时使用,同样会失效其他的cache line

(3) 处理Shareable locations when no cached copy is required

主要用于一个master,不想allocate cache或者没有caceh

1. ReadOnce 读操作,读后不需要将其他的cache修改为shared;

2. WriteUnique操作,写一行或者写部分,在写之前应当移除所有的cache line的拷贝;

3. WriteLineUnique操作,仅用在整行的时候;

注意 1.2. 不要求整行,但是3要求。

C1.4.3 Memory update transactions

WriteBack   :  写回,master将一行脏cache写入主存,不再保留拷贝

WriteClean: 写清,master将一行脏cache写入主存,可以保留拷贝

WriteEvict: 用于evict一行干净的cache line,将cache写入到更低的cache层次,如L3或者系统cache,不需要写入主存。

Evict:与数据传输无关,可以将数据从local cache移除,并且不需要写入主存。

这四个操作都不会导致其他cache的snoop transaction,其他cache也不需要了解这个cache line有没有被写入到主存中。(不理解啊)

C 1.4.4 Cache maintenance transactions

Master可以发起cache的一致性操作,用于维护一致性,被称为软件一致性。

一个发起一致性操作的cache也负责维护自身的cache的一致性

CleanShared: 负责clean其他master的cache,其他的cache当接收到这个命令后如果包含dirty line,会提供这一行,以写入主存,这个cache可以保存拷贝。

CleanInvalid: 负责clean并且invalidate其他的master的cache,如果其他的master包含一个clean的line,将会失效,如果包含dirty的line,将会写入主存,并且移除拷贝。

MakeInvalid:负责发起失效操作,如果一个snoop cache接受到这一操作,它必须移除本地copy,不需要提供任何数据即使数据是脏的。

C1.4.5 Snoop transactions


C1.4.6 Barrier transaction

屏障操作用于保持ordering and observation transaction。

提供:内存屏障,异步屏障,

内存屏障:如果一个master可以观察到另一个master在屏障后的任意操作,那么它也必须能观察到之前的任意操作;

异步屏障:在屏障之前发起的所有操作都需要被domain中的每一个master观察到。一些异步屏障要求,在屏障前发起的所有操作都应当进入到目的地。

C1.4.7 Distributed virtual memory transaction

用于虚拟内存系统的维护,以及在分布式虚拟内存系统器件之间典型的信息传递。

C1.5 Transaction Processing

当一个master器件发起transaction传输的时候,一致性信号表示是否将transaction传输到其他的shareable器件上,因此这就需要一致性的功能支持,一般操作过程如下:

1. 器件发起操作

2. 根据是否需要一致性:

    a. 传输被发起,传输到slave上,(不需要一致性),直接根据地址译码;

    b. 传输被发送到一致性支持逻辑interconnect上;

3. 该transaction将会和其他器件发起的后续的transaction进行检查,以保证正确的处理顺序;

4. interconnect决定是否需要snoop transaction

5. 每个cache master接收到snoop transaction的,都需要提供snoop 响应。有的master还要提供数据;

6. interconnect决定是否要与主存进行处理;

7. interconnect校对snoop响应以及任何需要的数据;

8. 发起操作的期间完成传输。

C1.6 

C1.6.1 Domain

Shareablility 区域就是一组master,其中的master决定是否要向其他master发起一致性/屏障操作的区域。

对于coherent transaction,master器件根据domain判断其他的master是否包含这一行的备份。 内联器件根据domain判断是否要snoop其他的器件以完成操作。

对于barrier transaction, master器件根据domain决定其他的器件是否要保持ordering relationship。



系统级的传输对系统中所有器件可见。因为系统中包括没有硬件一致性cache的master,因此这些传输在任何层次都不能被缓存。


C1.6.2 Barriers

一个barrier操作有地址phase和响应,但是不包括数据的传输。一个master一定要在读地址通道和写地址通道上都发起barrier操作,才算barrier transaction。

barriers 可以增强顺序,因为一个master不能在barrier后发起读或者写操作,直到它接收到barrier操作的读数据和写通道的响应。

C1.6.3 Distributed Virtual Memory

ACE支持DVM,并且包括了transaction,以实现虚拟内存管理。



实际上就是 master发起虚拟地址的传输,需要经过smmu转换为物理地址,如果tlb里面有物理地址,那么最好。否则就要来一次transaction table walk,就是查表。当然表中也可能没有,这时候就要产生一个page fault:


维护transaction table,可能会改变transaction table,这就需要更改tlb中响应的项。为了防止使用这些 项,将会发出一个dvm message,以发起tlb的失效操作。

如果transaction table 已经被更新,并且tlb被失效了,一个dvm sync transaction将会被发起,以保证所有的需要的传输都已经被完成。