一种基于PCIe地址转换服务机制的ATC实现方法技术

技术编号:37555573 阅读:9 留言:0更新日期:2023-05-15 07:39
本发明专利技术公开了一种基于PCIe地址转换服务机制的ATC实现方法。该方法包括:对读/写操作指令中虚拟地址的高位段地址进行hash计算,得到第一级查找表的索引地址frt_index;用frt_index作为二维数组entry_valid的指针,检查是否存在有效的第二级查找表;在不存在有效的第二级查找表,且在FIFO中不存在与frt_index对应的虚拟地址相同的待翻译的地址时,将frt_index对应的虚拟地址存入FIFO,等待被封装为翻译请求包。本发明专利技术能减少相同地址的翻译请求,节省PCIe带宽。节省PCIe带宽。节省PCIe带宽。

【技术实现步骤摘要】
一种基于PCIe地址转换服务机制的ATC实现方法


[0001]本专利技术属于数据处理
,更具体地,涉及一种基于PCIe地址转换服务机制的ATC实现方法。

技术介绍

[0002]高速串行计算机扩展总线(Peripheral Component Interconnect express,PCIe)广泛用于搭建主机系统处理器和各种外设的互连。比如和图形处理器(Graphics Processing Unit,GPU)连接时,需要实现主机端(也称之为根组件(Root Complex,RC)端)与GPU端(也称之为终点(End Point,EP)端)的双向数据传输。通常,RC端的内存地址域和EP端的显存地址域属于不同地址域,需要经过地址转换单元(Address Translation Unit,ATU)实现存储器的读写操作。从EP地址域到RC地址域的转换,在PCIe协议中由地址转换服务(Address Translation Service,ATS)协议描述。
[0003]PCIe协议引入ATS机制旨在缓解RC端的转换代理(Translation Agent,TA)处理虚拟地址和物理地址的转换压力,将部分地址的转换放在EP侧实现。这样,PCIe拓扑总线上挂载的某个EP具备ATS功能,将承担自身与RC间的地址翻译,突破RC端的翻译效率瓶颈。ATS机制定义了一组基于传输层数据包(Transport Layer Packets,TLP)的地址管理机制,并定义了地址转换缓冲(Address Translation Cache,ATC)来存放映射关系。该协议简单地描述了两个闭环交流通路(EP发起地址转换请求,RC回复地址转换请求;RC发起地址作废请求,EP回复地址作废请求)来收集和作废地址映射关系,实现对ATC的管理。但是如何在有限的ATC空间中实现地址转换的最大效率,成为EP端的实现难点。

技术实现思路

[0004]针对现有技术的以上缺陷或改进需求,本专利技术提供了一种基于PCIe地址转换服务机制的ATC实现方法,能够有效增加EP端ATC的地址命中率,最大效率地实现地址翻译。
[0005]为实现上述目的,本专利技术提供了一种ATC实现方法,包括:
[0006]接收存储器读/写操作指令;
[0007]对读/写操作指令中虚拟地址的高位段地址进行hash计算,得到第一级查找表的索引地址frt_index;
[0008]用第一级查找表的索引地址frt_index作为二维数组entry_valid的指针,检查该索引值往下是否存在有效的第二级查找表;其中,二维数组entry_valid用于标志第二级查找表的有效性;
[0009]在不存在有效的第二级查找表时,检查FIFO中是否存在与第一级查找表的索引地址frt_index对应的虚拟地址相同的待翻译的地址;
[0010]在FIFO中不存在与第一级查找表的索引地址frt_index对应的虚拟地址相同的待翻译的地址时,将第一级查找表的索引地址frt_index对应的虚拟地址存入FIFO,等待被封装为翻译请求包。
[0011]在一些实施方式中,上述ATC实现方法还包括:在FIFO中存在与第一级查找表的索引地址frt_index对应的虚拟地址相同的待翻译的地址时,丢弃第一级查找表的索引地址frt_index对应的虚拟地址,取消翻译。
[0012]在一些实施方式中,上述ATC实现方法还包括:
[0013]在存在有效的第二级查找表时,根据第一级查找表的索引地址frt_index,得到所有有效的第二级查找表在DDR中的基地址;
[0014]根据第二级查找表在DDR中的基地址和第二级查找表的索引地址sec_index,得到存放映射关系的DDR地址,读取映射关系;
[0015]根据映射关系,比较虚拟地址的高位段地址,确定是否执行翻译操作。
[0016]在一些实施方式中,上述ATC实现方法还包括:
[0017]在确定执行翻译操作时,根据映射关系取出翻译地址,用翻译地址替换虚拟地址的高位段,将新地址作为存储器读/写包的有效字段;
[0018]在确定不执行翻译操作时,取消翻译。
[0019]在一些实施方式中,第二级查找表的基地址存放于第一级查找表中。
[0020]在一些实施方式中,根据虚拟地址的STU的大小,对虚拟地址进行区域划分,对不同区域的虚拟地址,采用不同的区域规则进行hash计算,得到第一级查找表的索引地址frt_index。
[0021]在一些实施方式中,最小STU为4KB,将相邻的4个STU的虚拟地址划分为一个区域,从4KB

32GB,一共划分6个区域,分别标记为region0至region5;region 0对应STU为4KB/8KB/16KB/32KB的虚拟地址,region1对应STU为64KB/128KB/256KB/512KB的虚拟地址,region2对应STU为1MB/2MB/4MB/8MB的虚拟地址,region3对应STU为16MB/32MB/64MB/128MB的虚拟地址,region4对应STU为256MB/512MB/1GBMB/2GB的虚拟地址,region5对应STU为4GB/8GB/16GB/32GB的虚拟地址。
[0022]在一些实施方式中,二维数组entry_valid的深度为2
frt_index
,宽度为1bit;二维数组entry_valid的行元素是第一级查找表的索引值,列元素标志该索引值对应的第二级查找表的有效性。
[0023]在一些实施方式中,第一级查找表存储于SRAM,第二级查找表存储于DDR。
[0024]在一些实施方式中,上述ATC实现方法还包括根据翻译完成包,更新二维数组entry_valid。
[0025]在一些实施方式中,根据翻译完成包,更新二维数组entry_valid进一步包括:
[0026]接收翻译完成包;
[0027]判断翻译完成包是否有效;
[0028]在翻译完成包有效时,根据翻译完成包确定虚拟地址的STU;
[0029]根据STU确定虚拟地址所在的区域,按照区域对应的规则对翻译请求包中的虚拟地址进行hash计算,得到第一级查找表的索引地址frt_index;
[0030]用第一级查找表的索引地址frt_index作为二维数组entry_valid的指针,检查该索引值往下连续四个第二级查找表是否全部有效;
[0031]在连续四个第二级查找表全部有效时,进一步检查这些第二级查找表的索引地址sec_index处的单元是否均已被占用;
[0032]在连续四个第二级查找表全部有效,且四个第二级查找表的索引地址sec_index处的单元均被占用时,将翻译完成包丢弃;
[0033]在连续四个第二级查找表全部有效,且四个第二级查找表的索引地址sec_index处存在未被占用的单元时,将映射关系写入最先确认没被占本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种ATC实现方法,其特征在于,包括:接收存储器读/写操作指令;对读/写操作指令中虚拟地址的高位段地址进行hash计算,得到第一级查找表的索引地址frt_index;用第一级查找表的索引地址frt_index作为二维数组entry_valid的指针,检查该索引值往下是否存在有效的第二级查找表;其中,二维数组entry_valid用于标志第二级查找表的有效性;在不存在有效的第二级查找表时,检查FIFO中是否存在与第一级查找表的索引地址frt_index对应的虚拟地址相同的待翻译的地址;在FIFO中不存在与第一级查找表的索引地址frt_index对应的虚拟地址相同的待翻译的地址时,将第一级查找表的索引地址frt_index对应的虚拟地址存入FIFO,等待被封装为翻译请求包。2.如权利要求1所述的ATC实现方法,其特征在于,还包括:在FIFO中存在与第一级查找表的索引地址frt_index对应的虚拟地址相同的待翻译的地址时,丢弃第一级查找表的索引地址frt_index对应的虚拟地址,取消翻译。3.如权利要求1所述的ATC实现方法,其特征在于,还包括:在存在有效的第二级查找表时,根据第一级查找表的索引地址frt_index,得到所有有效的第二级查找表在DDR中的基地址;根据第二级查找表在DDR中的基地址和第二级查找表的索引地址sec_index,得到存放映射关系的DDR地址,读取映射关系;根据映射关系,比较虚拟地址的高位段地址,确定是否执行翻译操作。4.如权利要求3所述的ATC实现方法,其特征在于,还包括:在确定执行翻译操作时,根据映射关系取出翻译地址,用翻译地址替换虚拟地址的高位段,将新地址作为存储器读/写包的有效字段;在确定不执行翻译操作时,取消翻译。5.如权利要求3所述的ATC实现方法,其特征在于,第二级查找表的基地址存放于第一级查找表中。6.如权利要求1所述的ATC实现方法,其特征在于,根据虚拟地址的STU的大小,对虚拟地址进行区域划分,对不同区域的虚拟地址,采用不同的区域规则进行hash计算,得到第一级查找表的索引地址frt_index。7.如权利要求6所述的ATC实现方法,其特征在于,最小STU为4KB,将相邻的4个STU的虚拟地址划分为一个区域,从4KB至32GB,一共划分6个区域,分别标记为region0至region5;region 0对应STU为4KB/8KB/16KB/32KB的虚拟地址,region1对应STU为64KB/128KB/256KB/512KB的虚拟地址,region2对应STU为1MB/2MB/4MB/8MB的虚拟地址,region3对应STU为16MB/32MB/64MB/128MB的虚拟地址,region4对应STU为256MB/512MB/1GBMB/2GB的虚拟地址,region5对应STU为4GB/8GB/16GB/32GB的虚拟地址。8.如权利要求1所述的ATC实现方法,其特征在于,二维数组entry_valid的深度为2
frt_index
,宽度为1bit;二维数组entry_valid的行元素是第一级查找表的索引值,列元素标志该索引值对应的第二级查找表的有效性。
9.如权利要求1所述的ATC实现方法,其特征在于,第一级查...

【专利技术属性】
技术研发人员:张梁何颖敖海
申请(专利权)人:芯动微电子科技武汉有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1