当前位置:智城范文网>范文大全 > 征文 > 基于SystemC的Cache一致性协议描述与验证

基于SystemC的Cache一致性协议描述与验证

时间:2022-03-24 09:24:59 来源:网友投稿

摘要:FLSAH SCI协议作为Cache一致性协议的一种,具有灵活性、高效性和适应性强等特点,是目前最具发展潜力的Cache一致性协议之一。该协议在继承标准SCI协议低存储开销、维护精确共享信息等优点的同时对标准SCI协议进行优化,得到更为高效、灵活的FLASH SCI协议。本文用SystemC高层次语言对FLASH SCI协议进行建模与描述,并验证其正确性。模拟结果证明了FLASH SCI协议的正确性以及其在存储开销和执行效率上的优越性。

关键词:Cache一致性协议 SystemC高层次语言 模拟验证 形式化验证 FLASH SCI协议

中图分类号:TP306 文献标识码:A 文章编号:1007-9416(2013)05-0151-03

1 引言

在分布式共享主存的多处理器系统中,处理器通过各种互连结构(总线、开关、网络等)访问主存或相互通讯,驻留在每个处理器内部的私有Cache成为提高层次存储系统性能的关键。但是私有Cache的引入在提高系统性能的同时,也带来了数据的不一致问题。图1为一个简单的分布式共享主存的多处理器系统结构示意图。

在多处理器系统中,每个处理器都有一个私有的Cache,而主存是共享的,这样很容易造成各私有Cache之间的数据不一致,表1就是一个例子。

在表1所示的情况下,如果不考虑数据一致性,处理器0和处理器1最后的结果是x=1,y=1,但实际上,x和y的值最后应该是2。这是由于处理器0和处理器1共享主存而拥有私有Cache导致的,这就是本文所说的数据不一致现象。

Cache一致性协议是为实现共享数据访问的一致性、提供逻辑统一的共享主存访问界面并尽量减少网络通信流量的额外增加所采用的机制[2]。Cache一致性协议设计和实现的正确性不仅直接决定系统的正确性,而且对系统的规模和性能有着至关重要的影响,是实现分布式共享主存多处理器系统的关键。因此,在多处理器系统研制过程中,必须对Cache一致性协议的功能正确性进行全面而有效的验证。

2 SystemC简介

SystemC[3]是一种能同时实现较高层次软件和硬件描述的系统级设计语言,它的本质是在C++基础上添加硬件扩展库和仿真核。一方面可以把它看作是与VHDL或Verilog HDL类似的硬件语言,另一方面可以把它看作纯粹的C++程序,只是拥有类似VHDL的类库支持。将SystemC用于Cache协议建模和验证可以有效的解决由Soc系统复杂度提高带来的系统级设计、验证和测试带来的不便,将精力放在Cache协议建模上。

SystemC源代码可以使用任何标准C++编译环境进行编译,生成可执行文件。运行可执行文件可以生成VCD格式的波形文件,可以使用综合工具将SystemC的寄存器传输级(RTL)描述综合为Verilog HDL代码用于FPGA或者ASIC设计,也可以使用体系结构综合工具综合为包括软件和硬件的片上系统。

3 验证FLASH SCI Cache一致性协议

3.1 FLASH SCI Cache一致性协议

SCI协议[4](Scalable Coherent Interface protocol)作为IEEE标准1596-1992而出名,SCI协议的目标是使用较少的存储开销记录大规模系统的共享信息。如图2所示,SCI协议的中心思想是使用双向链表链接共享结点,而且链表的指针是分布式的,不像动态指针分配协议[4]那样将指针集中在指针池中。由于SCI协议的存储器行的状态和一个指向共享链表头结点的指针域,所以它比位向量协议[4]和动态指针分配协议的目录头小得多。为了遍历共享链表,SCI协议必须沿着目录头中的指针遍历,直到到达目的结点,这个结点一定是保维护着“Tag副本集”(其中保存的是当前处理器私有Cache的状态副本)数据结构的。

SCI协议的分布式特征有两个优势:一是极大地减少存储开销,因为处理器私有Cache行的数量相比于主存中Cache行的数量是微不足道的,所有Tag副本信息对于每个处理器而言只是增加了极小的开销;二是解决了存储系统中的“hot spot”问题,所谓“hot spot”是指某个结点在一段时间内频繁执行一致性动作。假设每个结点的主存大小为64MB(226bytes),处理器私有Cache大小为1MB(220bytes),Cache行大小为128bytes,目录头大小为2bytes,Tag副本大小为8bytes,则SCI协议的目录头和Tag副本结构的存储开销如等式(3-1)所示。SCI协议的存储开销为:

位向量/粗粒度向量协议的存储开销为6.25%[4],动态指针分配协议的存储开销为7.03%[4]。相比较而言,SCI协议的存储开销非常小,在存储墙称为计算机发展瓶颈之一的今天,SCI协议占优巨大优势。

FLASH SCI协议[4]设计的目的是在FLASH结构[5]的机器环境下尽可能的实现标准SCI协议。FLASH SCI协议与IEEE标准1596-1992 SCI协议的不同之处在于:

(1)只有Tag副本记录Cache状态;

(2)INVAL消息在链表上连续传播;

(3)使用64项替换Buffer和Hash表;

(4)写回操作无延迟;

(5)遍历链表时不能操作处理器Cache中的数据;

(6)优化D状态读/写请求;

(7)精简结点ID位数和Cache状态位数。

在FLASH SCI协议中Cache状态只在Tag副本中有记录,比起原来在Cache中专门留出部分空间保存Cache状态,而Tag副本中又存储一份状态副本的设置,FLASH SCI协议减少了冗余信息,提高了存储效率,一定程度上加快了协议执行。

FLASH SCI协议在处理器Cache行被替换时并不是简单将数据覆盖,而是将Cache行数据和状态复制到替换Buffer中,一旦下次需要该数据时可以快速获得数据。替换Buffer的大小为64个Cache行大小并且是通过一个Hash表来查询的。这样的设计虽然在一定程度上使协议更加复杂了,但由程序的时间局部性原理可知这样做有利于处理器的执行效率。

即使有了替换Buffer,FLASH SCI也是不允许需要写回的数据暂存于Buffer的,在FLASH SCI中写回是立即执行,不允许有延迟。同时,为了保护数据,FLASH SCI不允许处理器通过遍历链表来操作Cache中的数据。

最后,FLASH SCI的目录项指针域和Tag副本数据结构中的前指针和后指针都只有10 bits,而IEEE标准SCI协议中是16 bits。同时,对于Cache状态,FLASH SCI也不需要标准SCI那么多,标准SCI中本来就有很多Cache状态是备用的。

3.2 验证模型及验证方法

在SystemC中,所有的信号和变量的初始化工作在构造函数中进行,它比其它函数先执行,由此可避免像Verilog HDL中由于初始化顺序不同引起的不同仿真器仿真结果不一致。

为重点说明验证方法,全面检验协议可行性,本文所用的验证分析模型是由5个相同结构的结点组成,每个结点包含一个处理器、一个私有Cache、主存的一部分和结点控制器。需要说明的是,为简化验证模型,每个Cache只考虑一个Cache行,这样就可以只关注协议本身而忽略与Cache有关的算法[6]。图3给出了验证模型。

本文验证的Cache一致性协议执行的粒度是Cache行,所以建立只有一个Cache行的系统模型对于本文所用到的Cache一致性协议的验证是足够的。对于执行粒度是字的Cache一致性协议,就必须建立每个Cache行有几个字的系统模型。无论执行粒度是Cache行还是字,验证的基本原理都是相同的[7]。

本文采用模拟验证方法,并在FLASH结构上实现验证。模拟验证[8-9](Simulation Verification)是目前的主流验证方法,通过在系统输入端施加外部激励,观察系统模型在外部激励信号作用下的反应判断该协议是否实现了预期的功能。模拟技术通过各种不同的操作序列验证设计是否满足功能要求,模拟时间通常与系统复杂性的平方成正比。在设计阶段早期可通过高层次模拟进行性能预测和分析;在设计阶段中期,模拟可用于软件算法开发和硬件求精;在设计阶段后期,模拟用于确定设计是否满足性能目标,并验证硬件和软

推荐访问: 验证 描述 协议 SystemC Cache

版权所有:智城范文网 2010-2025 未经授权禁止复制或建立镜像[智城范文网]所有资源完全免费共享

Powered by 智城范文网 © All Rights Reserved.。粤ICP备20058421号