【CHI】Transaction structure

        我们在前文【CHI】CHI协议,transaction事务汇总已经总结了事务类型,这篇开始讲述事务可以完成的方式。它显示了参与事务的各种组件可以使用的所有允许的选项。

注: 除了PCrdReturn 和PrefetchTgt之外,其他的事务在开始的时候都可以包含一个Retry的序列,也就是说可能会发生Retry。

一、Read transactions

Read事务分为Allocating Read和Non-allocating Read。

1.1 Allocating Read

【CHI】Transaction structure_第1张图片

 Allocating Read事务的顺序是:

一、该事务从请求者向Home发出Allocating Read请求开始。初始请求是以下请求之一:

—— ReadClean

—— ReadNotSharedDirty

—— ReadShared

—— ReadUnique

—— ReadPreferUnique

—— MakeReadUnique

二、可选方案(Alt) 1-6显示了Home处理事务的不同方式:

1.Combined response from Home

        Home向请求者(一般为RNF)返回一个组合的数据和响应CompData(读取数据+响应)。通常,当Home可以同时返回数据和响应时,就会使用此选项。例如,数据在本地缓存。

2.Separate data and response from Home

        Home向请求者返回一个单独的响应( RespSepData),和读取的数据(DataSepResp)。通常,当Home返回的响应比提供的数据更快时,就会使用此选项。

3. Combined response from Subordinate

——HNF向SNF发送读请求ReadNoSnp。

——可选地,当HNF请求 ReadReceipt响应时(即order !=0),SNF将返回一个ReadReceipt给HNF。

——SNF向RNF返回一个组合的响应和数据,CompData。

通常,HNF会使用此选项来减少消息计数或降低设计复杂性。

4. Response from Home, Data from Subordinate

——HNF向RNF返回一个单独的响应,RespSepData。

——HNF向SNF发送读数据请求ReadNoSnpSep。

——SNF返回一个ReadReceipt;注意HNF并不需要等待ReadReceipt才发RespSepData。

——SNF将读取数据DataSepResp返回给请求者。

通常,当HNF可以快速返回响应,但它没有可用的数据,并且需要下属返回数据时,它将使用此选项。

注:请求者在收到RespSepData即可返回CompAck,而不需要等到DataSepResp数据返回之后再发。

5. Forwarding snoop

Home请求Snoopee将读取数据Snp*Fwd转发给请求者。

snoopee:接收snoop请求的RNF。

也就是说,数据直接通过snoopee转发给请求者,而不需要再通过HNF转一道。

此处又有4个可选项:

Alt 5a.With response to Home

——Snoopee向请求者返回一个组合的响应和读取数据,CompData

——Snoopee向HNF返回一个snoop响应,SnpRespFwded。

通常,当Snoopee可以将数据转发给请求者,并且不需要向HNF提供数据副本时,它就会使用此选项。

Alt 5b.With data to Home

——Snoopee向请求者返回一个组合的响应和读取数据,CompData

——Snoopee向HNF返回一个带数据的snoop响应,SnpRespDataFwded。

注意:通常,当Snoopee可以将数据转发到请求者,但也必须向主页提供数据副本时,将使用此选项。例如,当Snoopee持有缓存行的dirty副本,但返回给请求者的数据必须是clean的时,就会发生这种情况。当HNF请求数据副本时,也会发生这种情况。

Alt 5c.Failed, must use alternative

snoopee返回了一个SnpResp给HNF。HNF必须使用前面描述的其他替代方案来完成对请求者的事务。

Alt 5d.Failed, must use alternative

Snoopee返回了一个带数据的snoop响应给HNF,SnpRespData或 SnpRespDataPtl。HNF必须使用前面描述的其他替代方案来完成对请求者的事务。

6. MakeReadUnique only

HNF返回给请求者的完成响应Comp。

此选项只适用于不需要读数据消息时的MakeReadUnique。

三、当请求者向HNF发送完成确认CompAck时,事务就结束了。

   只能在接收到 CompData或者 RespSepData后发送。

允许在发送CompAck之前等待DataSepResp,但不是必需的。

(也就是说RNF必须在收到响应之后才能给HNF发送完成确认CompAck,而不需要等到收到数据)

1.2 Non-allocating Read

【CHI】Transaction structure_第2张图片

十点了,睡觉睡觉,后面继续更新。。。

你可能感兴趣的:(ARM硬件开发,CHI协议,AMBA总线,ARM,IC设计)