CN116107935A - 一种基于PCIe地址转换服务机制的ATC实现方法 - Google Patents

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

Info

Publication number
CN116107935A
CN116107935A CN202211733287.XA CN202211733287A CN116107935A CN 116107935 A CN116107935 A CN 116107935A CN 202211733287 A CN202211733287 A CN 202211733287A CN 116107935 A CN116107935 A CN 116107935A
Authority
CN
China
Prior art keywords
index
address
lookup table
valid
frt
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202211733287.XA
Other languages
English (en)
Other versions
CN116107935B (zh
Inventor
张梁
何颖
敖海
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xindong Microelectronics Technology Wuhan Co ltd
Original Assignee
Xindong Microelectronics Technology Wuhan Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xindong Microelectronics Technology Wuhan Co ltd filed Critical Xindong Microelectronics Technology Wuhan Co ltd
Priority to CN202211733287.XA priority Critical patent/CN116107935B/zh
Publication of CN116107935A publication Critical patent/CN116107935A/zh
Application granted granted Critical
Publication of CN116107935B publication Critical patent/CN116107935B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/38Universal adapter
    • G06F2213/3852Converter between protocols
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

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

Description

一种基于PCIe地址转换服务机制的ATC实现方法
技术领域
本发明属于数据处理技术领域,更具体地,涉及一种基于PCIe地址转换服务机制的ATC实现方法。
背景技术
高速串行计算机扩展总线(Peripheral Component Interconnect express,PCIe)广泛用于搭建主机系统处理器和各种外设的互连。比如和图形处理器(GraphicsProcessing Unit,GPU)连接时,需要实现主机端(也称之为根组件(Root Complex,RC)端)与GPU端(也称之为终点(End Point,EP)端)的双向数据传输。通常,RC端的内存地址域和EP端的显存地址域属于不同地址域,需要经过地址转换单元(Address Translation Unit,ATU)实现存储器的读写操作。从EP地址域到RC地址域的转换,在PCIe协议中由地址转换服务(Address Translation Service,ATS)协议描述。
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端的实现难点。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于PCIe地址转换服务机制的ATC实现方法,能够有效增加EP端ATC的地址命中率,最大效率地实现地址翻译。
为实现上述目的,本发明提供了一种ATC实现方法,包括:
接收存储器读/写操作指令;
对读/写操作指令中虚拟地址的高位段地址进行hash计算,得到第一级查找表的索引地址frt_index;
用第一级查找表的索引地址frt_index作为二维数组entry_valid的指针,检查该索引值往下是否存在有效的第二级查找表;其中,二维数组entry_valid用于标志第二级查找表的有效性;
在不存在有效的第二级查找表时,检查FIFO中是否存在与第一级查找表的索引地址frt_index对应的虚拟地址相同的待翻译的地址;
在FIFO中不存在与第一级查找表的索引地址frt_index对应的虚拟地址相同的待翻译的地址时,将第一级查找表的索引地址frt_index对应的虚拟地址存入FIFO,等待被封装为翻译请求包。
在一些实施方式中,上述ATC实现方法还包括:在FIFO中存在与第一级查找表的索引地址frt_index对应的虚拟地址相同的待翻译的地址时,丢弃第一级查找表的索引地址frt_index对应的虚拟地址,取消翻译。
在一些实施方式中,上述ATC实现方法还包括:
在存在有效的第二级查找表时,根据第一级查找表的索引地址frt_index,得到所有有效的第二级查找表在DDR中的基地址;
根据第二级查找表在DDR中的基地址和第二级查找表的索引地址sec_index,得到存放映射关系的DDR地址,读取映射关系;
根据映射关系,比较虚拟地址的高位段地址,确定是否执行翻译操作。
在一些实施方式中,上述ATC实现方法还包括:
在确定执行翻译操作时,根据映射关系取出翻译地址,用翻译地址替换虚拟地址的高位段,将新地址作为存储器读/写包的有效字段;
在确定不执行翻译操作时,取消翻译。
在一些实施方式中,第二级查找表的基地址存放于第一级查找表中。
在一些实施方式中,根据虚拟地址的STU的大小,对虚拟地址进行区域划分,对不同区域的虚拟地址,采用不同的区域规则进行hash计算,得到第一级查找表的索引地址frt_index。
在一些实施方式中,最小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的虚拟地址。
在一些实施方式中,二维数组entry_valid的深度为2frt _ index,宽度为1bit;二维数组entry_valid的行元素是第一级查找表的索引值,列元素标志该索引值对应的第二级查找表的有效性。
在一些实施方式中,第一级查找表存储于SRAM,第二级查找表存储于DDR。
在一些实施方式中,上述ATC实现方法还包括根据翻译完成包,更新二维数组entry_valid。
在一些实施方式中,根据翻译完成包,更新二维数组entry_valid进一步包括:
接收翻译完成包;
判断翻译完成包是否有效;
在翻译完成包有效时,根据翻译完成包确定虚拟地址的STU;
根据STU确定虚拟地址所在的区域,按照区域对应的规则对翻译请求包中的虚拟地址进行hash计算,得到第一级查找表的索引地址frt_index;
用第一级查找表的索引地址frt_index作为二维数组entry_valid的指针,检查该索引值往下连续四个第二级查找表是否全部有效;
在连续四个第二级查找表全部有效时,进一步检查这些第二级查找表的索引地址sec_index处的单元是否均已被占用;
在连续四个第二级查找表全部有效,且四个第二级查找表的索引地址sec_index处的单元均被占用时,将翻译完成包丢弃;
在连续四个第二级查找表全部有效,且四个第二级查找表的索引地址sec_index处存在未被占用的单元时,将映射关系写入最先确认没被占用的DDR单元。
在一些实施方式中,上述ATC实现方法还包括:在以索引地址frt_index往下连续四个第二级查找表均无效时,以第二级查找表的基地址在DDR中创建第二级查找表,将映射关系写入创建的二级查找表的索引地址sec_index处的DDR单元。
在一些实施方式中,上述ATC实现方法还包括:在以索引地址frt_index往下连续四个第二级查找表部分有效时,依次检查四个第二级查找表是否有效,如果有效,进一步检查该第二级查找表的索引地址sec_index处的单元是否被占用;如果无效,直接在DDR中创建第二级查找表;向最先确认没被占用的单元中写入映射关系。
在一些实施方式中,上述ATC实现方法还包括:根据作废请求包,更新二维数组entry_valid。
在一些实施方式中,根据作废请求包,更新二维数组entry_valid进一步包括:
接收作废请求包;
根据作废请求包确定虚拟地址的STU;
根据STU确定虚拟地址所在的区域,按照区域对应的规则对作废请求包中的虚拟地址进行hash计算,得到第一级查找表的索引地址frt_index;
用第一级查找表的索引地址frt_index作为二维数组entry_valid的指针,检查以该索引值往下连续四个第二级查找表是否有效;
确定存在有效的第二级查找表,根据第一级查找表的索引地址frt_index,得到所有有效的第二级查找表的基地址;
根据第二级查找表的基地址和第二级查找表的索引地址sec_index,得到存放映射关系的DDR地址;
根据存放映射关系的DDR地址,读出全部的映射关系;
将请求作废的地址和读出的多个映射关系的未翻译地址进行比较,匹配后,将对应的映射关系作废,如果该第二级查找表全部作废,二维数组entry_valid的对应的标志位清除;
回复作废完成包。
在一些实施方式中,在不存在有效的第二级查找表时,丢弃作废请求包,回复不被支持的请求包。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:
当上游的直接存储器访问(Direct Memory Access,DMA)或主机GPU发起的存储器读写操作到达时,会对拦截的请求地址进行地址匹配操作,一旦命中,会取出翻译地址替换掉原请求地址高位,并将新地址作为TLP包的有效字段,由PCIe发起一笔已翻译存储器读写操作。如果没有命中,将会生成翻译请求(translation request)TLP包向RC申请翻译。为了节约PCIe带宽,减少相同粒度地址的重复请求,没有命中的地址并不会马上组成翻译请求包,而是会与FIFO中的待请求翻译地址比较过滤,保证一段时间的读写操作中,只会发起不同粒度地址的请求。将RC回复的翻译完成(translation completion)TLP包中的翻译地址和有效字段提取出来,与前面发起的翻译请求TLP包中的未翻译地址一并存入在DDR上开辟的ATC空间,实现对地址映射关系的收集。同时,EP也会收到RC端TA发起的作废请求(invalidate request)TLP包,在ATC中匹配到对应地址的映射关系后并作废,回复作废完成(invalidate completion)TLP包。通过两套握手机制,实现对ATC中映射关系的动态管理。
结合片内SRAM和片外DDR两种存储介质,配合两级查找表实现ATC。其中,SRAM主要存储第一级查找表,其索引地址由虚拟地址(Virtual Address,VA)的高位决定,里面存放第二级查找表在DDR中的基地址。考虑到VA的位宽是64位,采用hash算法将高位地址映射到11位地址上。比如当最小转换单元(Smallest Translation Unit,STU)为4KB时,hash算法会对VA[63:22]进行计算得到第一级查找表的索引地址frt_index[10:0],读取第一级查找表的内容得到第二级查找表在DDR中的基地址。第二级查找表在DDR中实现,其索引地址sec_index[9:0]就是VA[21:12],最终将映射关系写入该地址。类似地,当STU是4GB时,对VA[63:42]作hash计算得到第一级查找表的索引地址frt_index,VA[41:32]作为第二级查找表的索引地址sec_index。根据STU的大小,本发明总共提出了6个区域(region),有6套两级查找表的结构。region 0用来匹配STU为4KB/8KB/16KB/32KB的地址,region 1用来匹配STU为64KB/128KB/256KB/512KB的地址,region 2用来匹配STU为1MB/2MB/4MB/8MB的地址,region 3用来匹配STU为16MB/32MB/64MB/128MB的地址,region 4用来匹配STU为256MB/512MB/1GBMB/2GB的地址,region 5用来匹配STU为4GB/8GB/16GB/32GB的地址。由于每个region管理4个STU值,当STU非最小值时,写入第二级查找表时需做补写处理。
每个region理论上在DDR中会开辟2frt _ index个第二级查找表,但是实际使用场景很难全部开辟,并且当作废请求发生后,可能某个第二级查找表整体作废,故引入深度为2frt _ index,宽度为1bit的二维数组entry_valid来标志第二级查找表的有效性。这样当进行第二级查找表匹配之前,可以迅速遍历entry_valid来确定第二级查找表是否存在,提高效率。此外,为了增加命中率,当第一级查找表索引地址使用hash算法时,存在不同的地址hash到相同的索引地址,应当同时检查该索引地址往下的4个单元的有效性,只有均无效才会放弃匹配。
附图说明
图1是本发明实施例的基于PCIe地址转换服务机制的ATC实现方法流程示意图;
图2是本发明实施例的根据翻译完成包,更新二维数组的方法流程示意图;
图3是本发明实施例的根据作废请求包,更新二维数组的方法流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。正如本领域技术人员可以认识到的那样,在不脱离本申请的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。
对ATC的管理手段主要包含对地址的翻译、映射关系的收集和映射关系的作废。其中对映射关系的收集依赖于对地址的翻译,只有没能匹配的地址才会被发起翻译请求包,继而收集映射关系。而对映射关系的作废主要由RC发起,当RC端的TA需要重新对I/O存储管理单元(I/O memory management unit,IOMMU)进行映射时,会向EP端发起地址作废请求包,通过这套基于ATS的握手机制实现对ATC的管理和维护。本发明ATC的具体实现需要考虑查找表的大小,结合DDR和片内SRAM可以最大效率的实现地址命中率。SRAM空间小速度快,用于存放第一级查找表,第二级查找表由第一级查找表动态建立,理论上每个第一级查找表可以建立对应的2048个第二级查找表,每个第二级查找表可以存放1024条映射关系,且存放的映射关系有一定的数据量,故将第二级查找表放在DDR。
由于ATS协议本身对地址转换粒度保留充分灵活度,仅限制了最小STU为4KB。为了降低设计复杂度,将相邻的4个STU设为一个region,这样从4KB至32GB,共有6个区域。当存储映射关系时,如果某个区域的最小STU发生了匹配事件,只需存储一条映射关系;相应地,如果某个区域的最大STU发生了匹配事件,等价于发生了8个最小STU的匹配事件,需要存储八条映射关系。同样地,当作废映射关系时,也会同时作废多条映射关系。
由于上游发起的存储器读写请求地址是64bit,如果不对地址进行压缩,将会耗费巨大的存储空间用于建立多级查找页表。本发明采用2级页表方式,结合片内SRAM和片外DDR分散页表存储压力。设定第二级查找表的索引地址是10bit,那么不同region的地址压缩算法不尽相同。region 0需要对地址bit63-bit22做hash运算,得到11位的frt_index。region 1需要对地址bit63-bit26做hash运算,region 2需要对地址bit63-bit30做hash运算,region 3需要对地址bit63-bit34做hash运算,region 4需要对地址bit63-bit38做hash运算,region 5需要对地址bit63-bit42做hash运算。
对于每个region,分配一块SRAM存储第一级查找表。当frt_index存在时,读取第一级查找表的内容得到第二级查找表的DDR基地址,然后将映射关系写入第二级查找表的索引地址sec_index。为方便管理,用二维数组entry_valid维护第二级查找表,它的更新发生在有映射关系的存入和映射关系的作废时。entry_valid的行元素是第一级查找表的索引值,列元素标志该索引值对应的第二级查找表的有效性。存入映射关系或作废映射关系时,存在不同的地址具有相同的hash值,此时应该连续往下查询4个单元,提高地址匹配率。
如图1所示,本发明实施例的基于PCIe地址转换服务机制的ATC实现方法包括:
步骤S101:接收上游的存储器读/写操作指令。
在一些实施方式中,存储器读/写操作指令来自主机。在一些实施方式中,主机为直接存储器访问(Direct Memory Access,DMA)或者图像处理器(Graphics ProcessingUnit,GPU)。
步骤S103:对读/写操作指令中虚拟地址的高位段地址进行hash计算,得到第一级查找表的索引地址frt_index。
在一些实施方式中,考虑到虚拟地址的位宽是64,采用hash算法将虚拟地址的高位段地址映射到11位地址上,得到第一级查找表的索引地址frt_index。
在一些实施方式中,根据虚拟地址的最小转换单元STU的大小,对虚拟地址进行区域划分,对不同区域的虚拟地址,采用不同的区域规则进行hash计算,得到第一级查找表的索引地址frt_index。在一些实施方式中,对不同区域的虚拟地址,采用hash算法将虚拟地址的不同高位段地址映射到11位地址上。
在一些实施方式中,最小STU为4KB,将相邻的4个STU的虚拟地址划分为一个区域,从4KB-32GB,一共划分6个区域,分别标记为region 0至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的虚拟地址。
在一些实施方式中,根据STU判断虚拟地址在region 0时,对虚拟地址的bit63-bit22即VA[63:22]做hash运算,得到11位的第一级查找表的索引地址frt_index。根据STU判断虚拟地址在region 1时,对虚拟地址的bit63-bit26即VA[63:26]做hash运算,得到11位的第一级查找表的索引地址frt_index。根据STU判断虚拟地址在region 2时,对虚拟地址的bit63-bit30即VA[63:30]做hash运算,得到11位的第一级查找表的索引地址frt_index。根据STU判断虚拟地址在region 3时,对虚拟地址的bit63-bit34即VA[63:34]做hash运算,得到11位的第一级查找表的索引地址frt_index。根据STU判断虚拟地址在region 4时,对虚拟地址的bit63-bit38即VA[63:38]做hash运算,得到11位的第一级查找表的索引地址frt_index。根据STU判断虚拟地址在region 5时,对虚拟地址的bit63-bit42即VA[63:42]做hash运算,得到11位的第一级查找表的索引地址frt_index。
步骤S105:用第一级查找表的索引地址frt_index作为二维数组entry_valid的指针,检查该索引值往下连续四个第二级查找表中是否存在有效的第二级查找表;
在一些实施方式中,二维数组entry_valid的行元素是第一级查找表的索引值,二维数组entry_valid的1bit列元素用于标志该索引值对应的第二级查找表的有效性。
在一些实施方式中,二维数组entry_valid的更新发生在有映射关系存入和映射关系作废时。
步骤S107:确定存在有效的第二级查找表,根据第一级查找表的索引地址frt_index,往下查询4个单元,得到所有有效的第二级查找表在DDR中的基地址;
步骤S109:根据第二级查找表在DDR中的基地址和第二级查找表的索引地址sec_index,得到存放映射关系的DDR地址;
在一些实施方式中,根据STU判断虚拟地址在region 0时,将VA[21:12]作为第二级查找表的索引地址sec_index。根据STU判断虚拟地址在region 1时,将VA[25:16]作为第二级查找表的索引地址sec_index。根据STU判断虚拟地址在region 2时,将VA[29:20]作为第二级查找表的索引地址sec_index。根据STU判断虚拟地址在region 3时,将VA[33:24]作为第二级查找表的索引地址sec_index。根据STU判断虚拟地址在region 4时,将VA[37:28]作为第二级查找表的索引地址sec_index。根据STU判断虚拟地址在region 5时,将VA[41:32]作为第二级查找表的索引地址sec_index。
步骤S111:根据存放映射关系的DDR地址,读取全部映射关系。
在一些实施方式中,存放映射关系的DDR地址可能存在多个。
步骤S113:根据映射关系的R/W/U等字段,比较待翻译地址(即虚拟地址)的高位段地址,确定是否执行翻译操作。
在一些实施方式中,可能存在多条映射关系,有且只有一条和待翻译地址高位段匹配。
在一些实施方式中,按照ATS规则,RC回复的翻译完成包中有些状态位需要作为能否翻译的条件,比如当W为0时,表示该翻译地址不可用于存储器的写操作翻译。
步骤S115:确定执行翻译操作时,发出已经翻译的存储器读/写TLP包,将AT字段置为10用以标识。
在一些实施方式中,根据映射关系取出翻译地址,用翻译地址替换待翻译地址(即虚拟地址)的高位段,将新地址作为TLP包的有效字段,组成AT字段为10的存储器读/写TLP包。
步骤S117:确定不执行翻译操作时,发出普通的未经翻译的存储器读/写TLP包,将AT字段置为00用以标识。
在一些实施方式中,取消翻译,组成AT字段为00的存储器读写TLP包。
步骤S119:确定不存在有效的第二级查找表,遍历FIFO中待翻译的地址,检查FIFO中是否存在与第一级查找表的索引地址frt_index对应的虚拟地址相同的待翻译的地址。
步骤S121:确定FIFO中不存在与第一级查找表的索引地址frt_index对应的虚拟地址相同的待翻译的地址,将第一级查找表的索引地址frt_index对应的虚拟地址存入FIFO,等待被封装为AT字段为01的翻译请求TLP包。
在一些实施方式中,按照ATS规则,翻译请求包类似于存储器读TLP包,但需要将AT字段置为01用以标识。
步骤S123:确定FIFO中存在与第一级查找表的索引地址frt_index对应的虚拟地址相同的待翻译的地址,丢弃第一级查找表的索引地址frt_index对应的虚拟地址,取消翻译,组成AT字段为00的存储器读/写TLP包。
其中,FIFO中存在与第一级查找表的索引地址frt_index对应的虚拟地址相同的待翻译的地址,说明在该时间段,存在相同的待翻译地址在等待发起翻译请求,因此,丢弃该第一级查找表的索引地址frt_index对应的虚拟地址。
在一些实施方式中,存储器读/写访问通常表现为相同粒度的地址在连续时间内频繁出现,利用该特点可以减少相同地址的翻译请求,节省PCIe带宽。具体地,将未翻译地址存入FIFO,而不是立即生成翻译请求包,而存入FIFO的条件是该地址与FIFO中待翻译的地址不同。
如前所述,二维数组entry_valid的更新发生在有映射关系存入和映射关系作废时。本发明实施例的基于PCIe地址转换服务机制的ATC实现方法进一步包括根据翻译完成包,更新二维数组entry_valid。如图2所示,根据翻译完成包,更新二维数组entry_valid进一步包括如下步骤:
步骤S201:接收RC的翻译完成包。
在一些实施方式中,接收到RC的翻译完成包后,执行步骤S202:从FIFO中取出一个等待翻译的地址,将其封装成翻译请求TLP包。
步骤S203:判断翻译完成包是否有效。
在一些实施方式中,在判断翻译完成包无效时,返回步骤S201,继续接收RC的翻译完成包。
步骤S205:判断翻译完成包有效,根据翻译完成包中的S字段确定虚拟地址的STU。
步骤S207:根据STU确定虚拟地址所在的区域,按照区域对应的规则对翻译请求TLP包中的未翻译地址即虚拟地址进行hash计算,得到第一级查找表的索引地址frt_index。
在一些实施方式中,根据STU判断虚拟地址在region 0时,对虚拟地址的bit63-bit22即VA[63:22]做hash运算,得到11位的第一级查找表的索引地址frt_index。根据STU判断虚拟地址在region 1时,对虚拟地址的bit63-bit26即VA[63:26]做hash运算,得到11位的第一级查找表的索引地址frt_index。根据STU判断虚拟地址在region 2时,对虚拟地址的bit63-bit30即VA[63:30]做hash运算,得到11位的第一级查找表的索引地址frt_index。根据STU判断虚拟地址在region 3时,对虚拟地址的bit63-bit34即VA[63:34]做hash运算,得到11位的第一级查找表的索引地址frt_index。根据STU判断虚拟地址在region 4时,对虚拟地址的bit63-bit38即VA[63:38]做hash运算,得到11位的第一级查找表的索引地址frt_index。根据STU判断虚拟地址在region 5时,对虚拟地址的bit63-bit42即VA[63:42]做hash运算,得到11位的第一级查找表的索引地址frt_index。
步骤S209:用第一级查找表的索引地址frt_index作为二维数组entry_valid的指针,检查第一级查找表的索引地址frt_index往下连续四个第二级查找表是否全部有效;
步骤S211:在连续四个第二级查找表全部有效时,进一步检查这些第二级查找表的索引地址sec_index处的单元是否均已被占用;
在一些实施方式中,将与进行hash计算的虚拟地址的高位段地址相邻的低位段地址作为第二级查找表的索引地址sec_index。
在一些实施方式中,根据STU判断虚拟地址在region 0时,将VA[21:12]作为第二级查找表的索引地址sec_index。根据STU判断虚拟地址在region 1时,将VA[25:16]作为第二级查找表的索引地址sec_index。根据STU判断虚拟地址在region 2时,将VA[29:20]作为第二级查找表的索引地址sec_index。根据STU判断虚拟地址在region 3时,将VA[33:24]作为第二级查找表的索引地址sec_index。根据STU判断虚拟地址在region 4时,将VA[37:28]作为第二级查找表的索引地址sec_index。根据STU判断虚拟地址在region 5时,将VA[41:32]作为第二级查找表的索引地址sec_index。
步骤S213:在连续四个第二级查找表全部有效,且四个第二级查找表的索引地址sec_index处的单元均被占用时,将翻译完成包丢弃。
步骤S215:在连续四个第二级查找表全部有效,且四个第二级查找表的索引地址sec_index处存在未被占用的单元时,将映射关系写入最先确认没被占用的DDR单元。
在一些实施方式中,写入的映射关系包含翻译后的地址、翻译前的地址(如果开启了signal root I/O virtualization,即SRIOV功能,function number也会当作地址高位)及状态信息等。根据STU不同,可能需要写入1/2/4/8条映射关系。比如根据翻译完成包确定STU对应region 0,且STU为16KB,那么需在DDR地址的bit13-bit12处写入4条映射关系。
步骤S217:在以索引地址frt_index往下连续四个第二级查找表均无效时,以第二级查找表的基地址在DDR中创建第二级查找表,将映射关系写入创建的二级查找表的索引地址sec_index处的DDR单元。
步骤S219:在以索引地址frt_index往下连续四个第二级查找表部分有效时,依次检查四个第二级查找表是否有效,如果有效,进一步检查该第二级查找表的索引地址sec_index处的单元是否被占用;如果无效,直接在DDR中创建第二级查找表。
步骤S221:向最先确认没被占用的单元中写入映射关系。
在一些实施方式中,如果新建立了第二级查找表,将二维数组entry_valid中对应的标志位置位。
在一些实施方式中,根据第二级查找表是否有效和第二级查找表的sec_index处的单元是否被占用,以最先确认空位的DDR单元作为没被占用单元。
在一些实施方式中,如果连续四个第二级查找表均无效或部分无效,则需要从frt_index开始到frt_index+3结束,依次确认空位,如果有空位,向最先确认空位的DDR单元写入映射关系。空位可能是第二级查找表有效但sec_index处没被占用的DDR单元,也可能是第二级查找表无效,重新创建的第二级查找表的sec_index处的DDR单元,向最先确认的空位写入映射关系。
在一些实施方式中,从frt_index开始到frt_index+3结束,如果均标志第二级查找表无效,则直接在DDR中创建第二级查找表,写入映射关系并对entry_valid做上标记;如果指示第二级查找表有效,向确认有空位的地方写入映射关系。总之,最先确认空位的DDR单元优先写入映射关系。
本发明实施例的基于PCIe地址转换服务机制的ATC实现方法进一步包括根据作废请求包,更新二维数组entry_valid。如图3所示,根据作废请求包,更新二维数组entry_valid进一步包括如下步骤:
步骤S301:接收RC的地址作废请求包。
步骤S303:根据作废请求包中的S字段确定虚拟地址的STU。
步骤S305:根据STU确定虚拟地址所在的区域,按照区域对应的规则对作废请求包中的未翻译地址即虚拟地址进行hash计算,得到第一级查找表的索引地址frt_index。
在一些实施方式中,根据STU判断虚拟地址在region 0时,对虚拟地址的bit63-bit22即VA[63:22]做hash运算,得到11位的第一级查找表的索引地址frt_index。根据STU判断虚拟地址在region 1时,对虚拟地址的bit63-bit26即VA[63:26]做hash运算,得到11位的第一级查找表的索引地址frt_index。根据STU判断虚拟地址在region 2时,对虚拟地址的bit63-bit30即VA[63:30]做hash运算,得到11位的第一级查找表的索引地址frt_index。根据STU判断虚拟地址在region 3时,对虚拟地址的bit63-bit34即VA[63:34]做hash运算,得到11位的第一级查找表的索引地址frt_index。根据STU判断虚拟地址在region 4时,对虚拟地址的bit63-bit38即VA[63:38]做hash运算,得到11位的第一级查找表的索引地址frt_index。根据STU判断虚拟地址在region 5时,对虚拟地址的bit63-bit42即VA[63:42]做hash运算,得到11位的第一级查找表的索引地址frt_index。
步骤S307:用第一级查找表的索引地址frt_index作为二维数组entry_valid的指针,检查以该索引值往下连续四个第二级查找表是否有效。
步骤S309:确定不存在有效的第二级查找表,说明无法匹配,丢弃作废请求包,回复不被支持的请求(unsupport request)包。
步骤S311:确定存在有效的第二级查找表,根据第一级查找表的索引地址frt_index,往下查询4个单元,得到所有有效的第二级查找表的基地址。
步骤S313:根据第二级查找表的基地址sec_base和第二级查找表的索引地址sec_index,得到存放映射关系的DDR地址。
在一些实施方式中,将与进行hash计算的虚拟地址的高位段地址相邻的低位段地址作为第二级查找表的索引地址sec_index。
在一些实施方式中,根据STU判断虚拟地址在region 0时,将VA[21:12]作为第二级查找表的索引地址sec_index。根据STU判断虚拟地址在region 1时,将VA[25:16]作为第二级查找表的索引地址sec_index。根据STU判断虚拟地址在region 2时,将VA[29:20]作为第二级查找表的索引地址sec_index。根据STU判断虚拟地址在region 3时,将VA[33:24]作为第二级查找表的索引地址sec_index。根据STU判断虚拟地址在region 4时,将VA[37:28]作为第二级查找表的索引地址sec_index。根据STU判断虚拟地址在region 5时,将VA[41:32]作为第二级查找表的索引地址sec_index。
步骤S315:根据存放映射关系的DDR地址,读出全部的映射关系。
在一些实施方式中,可能存在多个存放映射关系的DDR地址。在一些实施方式中,将有效的映射关系全部读出,最多可能有四条。
步骤S317:将请求作废的地址和读出的多个映射关系的未翻译地址进行比较,匹配后,将对应的映射关系作废,如果该第二级查找表全部作废,二维数组entry_valid的对应的标志位清除,标志该第二级查找表已经无效。
步骤S319:回复作废完成包。
在一些实施方式中,作废完成包中的CC/itag/device ID信息来自于作废请求包。
本发明利用存储器读/写访问通常表现为相同粒度的地址在连续时间内频繁出现的特点,在未翻译地址与FIFO中待翻译的地址不同时,将未翻译地址存入FIFO,而不是立即生成翻译请求包,减少了相同地址的翻译请求,节省了PCIe带宽。结合片内SRAM和片外DDR两种存储介质,配合两级查找表实现ATC,其中,SRAM主要存储第一级查找表,其索引地址由虚拟地址的高位段决定。第二级查找表在DDR中实现,其索引地址为与虚拟地址的高位段地址相邻的低位段地址。采用hash算法将地址压缩,避免耗费巨大的存储空间用于建立多级查找页表,将相邻4个的STU设为一个区域,这样从4KB-32GB,共有6个区域,降低了设计复杂度。用二维数组entry_valid维护两级查找表,二维数组的行元素是第一级查找表的索引值,列元素标志该索引值对应的第二级查找表的有效性。存入映射关系或作废映射关系时,存在不同的地址具有相同的hash值,此时应该连续往下查询4个单元,提高地址匹配率。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包括于本申请的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或多个(两个或两个以上)用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分。并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
应理解的是,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。上述实施例方法的全部或部分步骤是可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。上述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。该存储介质可以是只读存储器,磁盘或光盘等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (16)

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的深度为2frt _ index,宽度为1bit;二维数组entry_valid的行元素是第一级查找表的索引值,列元素标志该索引值对应的第二级查找表的有效性。
9.如权利要求1所述的ATC实现方法,其特征在于,第一级查找表存储于SRAM,第二级查找表存储于DDR。
10.如权利要求1至9中任一项所述的ATC实现方法,其特征在于,还包括:根据翻译完成包,更新二维数组entry_valid。
11.如权利要求10所述的ATC实现方法,其特征在于,所述根据翻译完成包,更新二维数组entry_valid包括:
接收翻译完成包;
判断翻译完成包是否有效;
在翻译完成包有效时,根据翻译完成包确定虚拟地址的STU;
根据STU确定虚拟地址所在的区域,按照区域对应的规则对翻译请求包中的虚拟地址进行hash计算,得到第一级查找表的索引地址frt_index;
用第一级查找表的索引地址frt_index作为二维数组entry_valid的指针,检查该索引值往下连续四个第二级查找表是否全部有效;
在连续四个第二级查找表全部有效时,进一步检查这些第二级查找表的索引地址sec_index处的单元是否均已被占用;
在连续四个第二级查找表全部有效,且四个第二级查找表的索引地址sec_index处的单元均被占用时,将翻译完成包丢弃;
在连续四个第二级查找表全部有效,且四个第二级查找表的索引地址sec_index处存在未被占用的单元时,将映射关系写入最先确认没被占用的DDR单元。
12.如权利要求11所述的ATC实现方法,其特征在于,还包括:在以索引地址frt_index往下连续四个第二级查找表均无效时,以第二级查找表的基地址在DDR中创建第二级查找表,将映射关系写入创建的二级查找表的索引地址sec_index处的DDR单元。
13.如权利要求11所述的ATC实现方法,其特征在于,还包括:在以索引地址frt_index往下连续四个第二级查找表部分有效时,依次检查四个第二级查找表是否有效,如果有效,进一步检查该第二级查找表的索引地址sec_index处的单元是否被占用;如果无效,直接在DDR中创建第二级查找表;向最先确认没被占用的单元中写入映射关系。
14.如权利要求1至9中任一项所述的ATC实现方法,其特征在于,还包括:根据作废请求包,更新二维数组entry_valid。
15.如权利要求14所述的ATC实现方法,其特征在于,所述根据作废请求包,更新二维数组entry_valid包括:
接收作废请求包;
根据作废请求包确定虚拟地址的STU;
根据STU确定虚拟地址所在的区域,按照区域对应的规则对作废请求包中的虚拟地址进行hash计算,得到第一级查找表的索引地址frt_index;
用第一级查找表的索引地址frt_index作为二维数组entry_valid的指针,检查以该索引值往下连续四个第二级查找表是否有效;
确定存在有效的第二级查找表,根据第一级查找表的索引地址frt_index,得到所有有效的第二级查找表的基地址;
根据第二级查找表的基地址和第二级查找表的索引地址sec_index,得到存放映射关系的DDR地址;
根据存放映射关系的DDR地址,读出全部的映射关系;
将请求作废的地址和读出的多个映射关系的未翻译地址进行比较,匹配后,将对应的映射关系作废,如果该第二级查找表全部作废,二维数组entry_valid的对应的标志位清除;
回复作废完成包。
16.如权利要求15所述的ATC实现方法,其特征在于,当不存在有效的第二级查找表时,丢弃作废请求包,回复不被支持的请求包。
CN202211733287.XA 2022-12-30 2022-12-30 一种基于PCIe地址转换服务机制的ATC实现方法 Active CN116107935B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211733287.XA CN116107935B (zh) 2022-12-30 2022-12-30 一种基于PCIe地址转换服务机制的ATC实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211733287.XA CN116107935B (zh) 2022-12-30 2022-12-30 一种基于PCIe地址转换服务机制的ATC实现方法

Publications (2)

Publication Number Publication Date
CN116107935A true CN116107935A (zh) 2023-05-12
CN116107935B CN116107935B (zh) 2023-08-22

Family

ID=86255568

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211733287.XA Active CN116107935B (zh) 2022-12-30 2022-12-30 一种基于PCIe地址转换服务机制的ATC实现方法

Country Status (1)

Country Link
CN (1) CN116107935B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150356024A1 (en) * 2014-06-04 2015-12-10 Advanced Micro Devices, Inc. Translation Lookaside Buffer
US20180329830A1 (en) * 2017-05-11 2018-11-15 Qualcomm Incorporated Reducing metadata size in compressed memory systems of processor-based systems
US20190018785A1 (en) * 2017-07-14 2019-01-17 Arm Limited Memory system for a data processing network
CN110737608A (zh) * 2018-07-03 2020-01-31 阿里巴巴集团控股有限公司 一种数据操作方法、装置及系统
US20210124522A1 (en) * 2017-12-21 2021-04-29 Beijing Memblaze Technology Co., Ltd Address translation method and system for kv storage device
CN113297105A (zh) * 2021-05-08 2021-08-24 阿里巴巴新加坡控股有限公司 一种转换地址的缓存处理方法及装置
CN114116529A (zh) * 2021-12-01 2022-03-01 上海兆芯集成电路有限公司 快速加载装置和数据高速缓存方法
CN114556881A (zh) * 2019-10-17 2022-05-27 华为技术有限公司 一种地址翻译方法及装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150356024A1 (en) * 2014-06-04 2015-12-10 Advanced Micro Devices, Inc. Translation Lookaside Buffer
US20180329830A1 (en) * 2017-05-11 2018-11-15 Qualcomm Incorporated Reducing metadata size in compressed memory systems of processor-based systems
US20190018785A1 (en) * 2017-07-14 2019-01-17 Arm Limited Memory system for a data processing network
US20210124522A1 (en) * 2017-12-21 2021-04-29 Beijing Memblaze Technology Co., Ltd Address translation method and system for kv storage device
CN110737608A (zh) * 2018-07-03 2020-01-31 阿里巴巴集团控股有限公司 一种数据操作方法、装置及系统
CN114556881A (zh) * 2019-10-17 2022-05-27 华为技术有限公司 一种地址翻译方法及装置
US20220245067A1 (en) * 2019-10-17 2022-08-04 Huawei Technologies Co., Ltd. Address translation method and apparatus
CN113297105A (zh) * 2021-05-08 2021-08-24 阿里巴巴新加坡控股有限公司 一种转换地址的缓存处理方法及装置
CN114116529A (zh) * 2021-12-01 2022-03-01 上海兆芯集成电路有限公司 快速加载装置和数据高速缓存方法

Also Published As

Publication number Publication date
CN116107935B (zh) 2023-08-22

Similar Documents

Publication Publication Date Title
US8866831B2 (en) Shared virtual memory between a host and discrete graphics device in a computing system
KR101563659B1 (ko) 집성된 소페이지들을 사용한 페이지 사이즈 확장
US5802572A (en) Write-back cache having sub-line size coherency granularity and method for maintaining coherency within a write-back cache
US9223710B2 (en) Read-write partitioning of cache memory
CN102473138B (zh) 具有用于页面错误处理的闪存的扩展主存储器层次结构
US6295582B1 (en) System and method for managing data in an asynchronous I/O cache memory to maintain a predetermined amount of storage space that is readily available
US7783859B2 (en) Processing system implementing variable page size memory organization
US8782348B2 (en) Microprocessor cache line evict array
US20080183972A1 (en) Snoop Filtering Using a Snoop Request Cache
JPH06110781A (ja) キャッシュメモリ装置
US9418016B2 (en) Method and apparatus for optimizing the usage of cache memories
JPH07502356A (ja) 主メモリに対するアクセスを減らすことによって電力消費を減少させるキャッシュメモリ階層
US7380068B2 (en) System and method for contention-based cache performance optimization
US7308557B2 (en) Method and apparatus for invalidating entries within a translation control entry (TCE) cache
US5809526A (en) Data processing system and method for selective invalidation of outdated lines in a second level memory in response to a memory request initiated by a store operation
US20200257631A1 (en) Caching streams of memory requests
CN116107935B (zh) 一种基于PCIe地址转换服务机制的ATC实现方法
EP0470736B1 (en) Cache memory system
Yao et al. An adaptive read-write partitioning flash translation layer algorithm
US20030033483A1 (en) Cache architecture to reduce leakage power consumption
JPWO2006109421A1 (ja) キャッシュメモリ
US7769979B1 (en) Caching of page access parameters
JP3262182B2 (ja) キャッシュメモリ方式及びマイクロプロセッサ装置
US20230138215A1 (en) Memory system controlling nonvolatile memory
EP4328755A1 (en) Systems, methods, and apparatus for accessing data in versions of memory pages

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant