CN116594926A - 多副本非原子写的tlb作废操作实现方法与实现装置 - Google Patents

多副本非原子写的tlb作废操作实现方法与实现装置 Download PDF

Info

Publication number
CN116594926A
CN116594926A CN202310338803.7A CN202310338803A CN116594926A CN 116594926 A CN116594926 A CN 116594926A CN 202310338803 A CN202310338803 A CN 202310338803A CN 116594926 A CN116594926 A CN 116594926A
Authority
CN
China
Prior art keywords
tlb
request
invalidate
response
tlb invalidate
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.)
Pending
Application number
CN202310338803.7A
Other languages
English (en)
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.)
Nanhu Laboratory
Original Assignee
Nanhu Laboratory
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 Nanhu Laboratory filed Critical Nanhu Laboratory
Priority to CN202310338803.7A priority Critical patent/CN116594926A/zh
Publication of CN116594926A publication Critical patent/CN116594926A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7817Specially adapted for signal processing, e.g. Harvard architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/682Multiprocessor TLB consistency
    • 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

Abstract

本发明公开了一种多副本非原子写的TLB作废操作实现方法与实现装置,提供包括三种请求队列、一个TLB作废响应计数器和一个响应通道过滤器的TLB作废处理模块,通过独特的协议流程、处理方法和计数方式确保在TLB作废指令执行完成之时,前序发出的写操作都已真正执行完毕,从而解决了Non‑MCAW的TLB作废操作的实现问题。通过写操作到达存储一致性点来作为前序写操作的完成标志,同时通过增加两级广播协议流程和TLB作废响应计数器来解决写操作完成标志的判别问题,具有判断结果可靠,且硬件实现开销较小等优点。

Description

多副本非原子写的TLB作废操作实现方法与实现装置
技术领域
本发明属于非原子写的TLB作废操作技术领域,尤其是涉及一种多副本非原子写的TLB作废操作实现方法与实现装置。
背景技术
现代微处理器一般采用多核多线程共享存储架构,存储一致性是支撑并行程序在该架构下能正确运行的基础。存储一致性定义了对不同地址的存储访问操作的排序规则,根据其所允许的排序规则不同,存储一致性可以有多种存储一致性实现模型,例如顺序(Sequential)一致性模型、TSO(Total Store Order)模型、松弛(Relaxed)一致性模型等。由于不同的存储一致性模型定义了不同的合法存储序,因此软件编程人员必须清楚多核多线程共享存储架构所采用的存储一致性模型,才能在该架构上编写出正确的并行程序。
为了提高访存性能,现代多核多线程微处理器一般都会实现多级Cache。Cache的引入会导致相同地址多个数据副本之间的不一致性,为了解决该问题,多核多线程微处理器一般会采用Cache一致性协议来保证不同Cache中数据副本的一致性。Cache一致性协议的实现一般需要Cache代理(Cache Agent,CA)、目录代理(Home Agent,HA,现代多核多线程微处理器大都采用基于目录的Cache一致性协议)、IO代理(IO Agent,IA)。CA中的Cache可以缓存数据副本,能发出访问请求、接收数据响应和监听请求(用于作废数据副本或获取最新数据)。HA用于记录数据副本的状态,能接收访问请求、发出数据响应和监听请求。IA不能缓存数据副本,能发出访问请求和数据响应、接收访问请求、数据响应和监听请求(用于获取最新数据)。从上可看出,为了避免协议死锁,一致性协议的实现至少需要三个消息通道,即请求通道、响应通道和监听通道,分别用于传输访问请求、数据响应和监听请求。CA、HA和IA通过片上互连网络进行连接,且该网络一般是维序网络(即从相同源Agent发出的消息会顺序到达同一个目的Agent)。
多核多线程微处理器的处理器核到内存之间可能存在多级缓存,处理器核硬件线程发出的最新写数据需要经过多个缓存才能最终达到内存,这使得有些缓存中的数据是最新的数据副本,而有的缓存中的数据是旧的数据副本,这会引入写操作的原子性问题。存储一致性除了要定义合法的存储序规则,还需要定义写操作的原子属性,以描述写操作的原子性问题。根据不同硬件线程所能观察到的写数据的新值的时间不同,写操作的原子属性可以分为多副本原子写(multi-copy atomic write,MCAW)和多副本非原子写(non-multi-copy atomic write,Non-MCAW)两类。MCAW保证了当某个硬件线程观察到了某个写操作,且该硬件线程不是该写操作的发起者,则所有其它线程都能观测到该写操作。MCAW使得某个硬件线程的写数据要么能被其它硬件线程同时观察到(即都能读取新值),要么都不能被观察到(即都只能读取旧值),这说明写操作具有原子特性。Non-MCAW则无法保证写操作的原子特性,当某个硬件线程观察到了某个写操作时,其它线程不一定能观察到该写操作,即有的硬件线程能读取该写操作的新值,而有的线程只能读取该写操作的旧值。
采用MCAW实现方式的微处理器架构有X86、ARMV8等。这些架构一般采用写回Cache,并且在Cache一致性协议中,只有在获得了写操作权限(即作废所有其它被缓存的数据副本)之后才能在Cache中写入新值。由于MCAW能使软件人员看到具有原子特性的写操作视图,因此可以简化软件的并行编程,但是这些架构为了支持写的原子特性需要付出较大的硬件代价。采用Non-MCAW实现方式的微处理器架构主要是POWER系列处理器。这些架构一般采用写穿透Cache,并且在Cache一致性协议中,Cache可以被直接写入新值,而不需要获取写权限、等待所有其它被缓存的数据副本的作废完成。Non-MCAW可以简化硬件设计,但会增加并行编程难度,因为此时软件人员看到的是具有非原子特性的写操作视图。
现代微处理器的处理器核中一般都实现了TLB(Translation Lookaside Buffer)用于缓存常用的虚地址到物理地址的映射关系,以加速操作系统的虚存管理操作的执行速度。操作系统一般会以页面单位在页表中维护每个已分配页面的虚地址到物理地址的映射关系。当页面被释放回收或其映射关系发生了变化时,TLB中用于缓存该映射关系的表项需要被作废掉。由于每个处理器核的TLB都有可能缓存同一页面的虚地址到物理地址的映射关系,所以当该页面被释放回收或其映射关系发生变化时,为使得所有TLB中缓存的页面地址映射关系与操作系统维护的页表保持一致,所有处理器核中缓存了该映射关系的TLB表项都需要被作废掉(即TLB Shootdown)。为缩短TLB作废操作的执行时间,现代高性能微处理器一般在硬件上支持TLB Shootdown操作:即由执行TLB Shootdown指令的处理器核向所有其它处理器核广播TLB作废请求;当处理器核收到TLB作废请求后将本地TLB中的对应表项作废掉,然后向发起TLB Shootdown的处理器核返回TLB作废响应;当执行TLB Shootdown指令的处理器核收集齐所有的TLB作废响应并完成本处理器核的TLB作废操作之后,TLBShootdown指令执行完毕。
当页面的虚地址到物理地址的映射关系发生变化时,必须确保发生变化后的新的写操作数据能覆盖发生变化前的旧的写操作数据,这样后续新的读操作才能获得最新的数据。因此,当处理器核收到TLB作废请求时,除了需将对应的TLB表项作废,还需等待前序发出的所有写操作都已完成之后,才能返回TLB作废响应。现代微处理器中的HA和IA一般为写操作的存储一致性点,即先到达HA或IA的写操作数据会被后到达的写操作数据所覆盖。因此,处理器核所发出的前序写操作的完成标志为所有这些写操作都已经达到了微处理器的存储一致性点HA或IA。
采用MCAW实现方式的微处理器架构能比较容易判别写操作完成标志,因为在该架构下,写操作只有在获得了写权限之后才能执行,由于写权限是由存储一致性点HA或IA颁发的,当处理器核执行完写操作时,该写操作肯定已经到达了存储一致性点。因此基于MCAW实现方式的处理器核能很容易判别写操作完成标志,从而能很容易实现TLB作废指令。但是,对于采用Non-MCAW实现方式的微处理器架构,写操作完成标志的判别比较困难,因为在该架构下,写操作的执行不需要获得写权限就能执行,只要处理器核发出了写操作,则代表写操作执行完毕,但此时写操作可能还未达到存储一致性点HA或IA。
在本申请之前,申请人针对Non-MCAW实现方式的微处理器架构有提出过专门用于解决在该架构中的强同步语义实现问题的方案—多副本非原子写的存储序同步操作实现方法与实现装置[公开号:CN113900968A],该方案考虑到了对于采用Non-MCAW实现方式的微处理器架构,当处理器核的Cache处理完所有的存储访问请求时,此时只能保证所有的读访问响应都已返回,而无法保证写全局可见,因此提出用于解决强同步语义实现问题的方案。但是,该方案仅解决了强同步语义实现问题,无法解决Non-MCAW情形下的TLB作废操作的实现问题,也无法通过使用同步处理模块的处理方式解决Non-MCAW下的TLB作废操作实现问题。此外,现有技术也未有公开文献给出Non-MCAW情形下的TLB作废操作的实现方法。
发明内容
本发明的目的是针对上述问题,提供一种多副本非原子写的TLB作废操作实现方法与实现装置。
为达到上述目的,本发明采用了下列技术方案:
一种多副本非原子写的TLB作废操作实现装置,包括采用非原子写实现方式的微处理器架构,所述的微处理器架构包括若干CA、若干HA和若干IA,若干CA通过片上互连网络连接于若干HA和若干IA,每个CA均对应有一TLB作废处理模块,每个TLB作废处理模块分别连接在其对应的CA与片上互连网络之间;
所述的片上互连网络至少具有请求通道、响应通道和监听通道三个消息通道;
所述的TLB作废处理模块包括处理器核请求队列、TLB作废监听请求队列、非TLB作废监听请求队列、TLB作废响应计数器和响应通道过滤器;
处理器核请求队列,用于存储来自与本TLB作废处理模块相连的本地CA发出的访问请求;
TLB作废监听请求队列,用于存储来自片上互连网络的,由TLB作废请求转换而来的TLB作废监听请求,即当TLB作废处理模块不是源TLB作废处理模块时,用于存储该种情况的TLB作废监听请求;存储来自处理器核请求队列的,由TLB作废请求转换而来的TLB作废监听请求,当TLB作废处理模块是源TLB作废处理模块时,用于存储该种情况的TLB作废监听请求。
非TLB作废监听请求队列,用于存储来自片上互连网络的监听请求;
TLB作废响应计数器,用于记录本地CA在执行了TLB作废指令之后,还未收到的TLB作废响应数量,当TLB作废响应计数器归零后,产生TLB作废完成响应发送给本地CA;
响应通道过滤器,用于从片上互连网络发往本地CA的响应消息中识别出TLB作废拒绝响应消息和TLB作废完成响应消息,并对TLB作废响应计数器进行相应的减操作,其余响应消息直接发送给本地CA;接收来自处理器核请求队列的TLB作废拒绝请求,产生发往源TLB作废处理模块的TLB作废拒绝响应消息,并通过响应通道发送到片上互连网络。
在上述多副本非原子写的TLB作废操作实现装置中,采用公平轮转调度方式从TLB作废监听请求队列和非TLB作废监听请求队列中调度出一个监听请求发送至本地CA。
在上述多副本非原子写的TLB作废操作实现装置中,TLB作废响应计数器由来自处理器核请求队列的TLB作废请求进行初始化,TLB作废处理模块在接收到本地CA发出的TLB作废请求时,将TLB作废响应计数器初始化为m*(n+k),m为CA的数量,n为HA的数量,k为IA的数量,且
当接收到来自处理器核请求队列的TLB作废拒绝请求时,TLB作废响应计数器减n+k;
接收到来自响应通道过滤器的TLB作废拒绝响应消息时,TLB作废响应计数器减n+k;
接收到来自响应通道过滤器的TLB作废完成响应消息时,TLB作废响应计数器减1。
一种多副本非原子写的TLB作废操作实现方法,包括以下步骤:
S1.TLB作废处理模块在接收到本地CA发出的TLB作废请求时,
初始化TLB作废响应计数器,
通过请求通道向所有其它TLB作废处理模块广播TLB作废请求消息,
向本地CA发送TLB作废监听请求;
S2.各TLB作废处理模块接收到来自片上互连网络的TLB作废请求消息后,分别向各自本地的CA发送TLB作废监听请求;
S3.每个CA在接收到TLB作废监听请求时,将TLB相关表项作废,并等待前序写访问请求发送完毕,随后通过请求通道向所有存储一致性点HA和IA广播TLB作废完成请求消息;
S4.HA和IA在接收到作废完成请求消息后,向发起TLB作废请求的源TLB作废处理模块返回TLB作废完成响应;
S5.每接收到一个TLB作废完成响应,源TLB作废处理模块的TLB作废响应计数器记一次数,直到收齐所有TLB作废完成响应,向本地CA返回TLB作废完成响应。
在上述的多副本非原子写的TLB作废操作实现方法中,步骤S1中,初始化TLB作废响应计数器的值为m*(n+k),m为CA的数量,n为HA的数量,k为IA的数量;
步骤S5中,每接收到一个TLB作废完成响应,源TLB作废处理模块的TLB作废响应计数器减1,如果减操作执行完毕之后TLB作废响应计数器为零,则认为已收齐所有TLB作废完成响应。
在上述的多副本非原子写的TLB作废操作实现方法中,步骤S2中,当CA收到TLB作废监听请求时,如果CA判断到从未使用过与该TLB作废监听请求相对应的虚地址到物理地址的映射关系,则不进行TLB相关表项作废操作,直接通过响应通道向源TLB作废处理模块返回TLB作废拒绝响应。
在上述的多副本非原子写的TLB作废操作实现方法中,步骤S3中,当CA接收到相应TLB作废处理模块发出的监听请求时,检测该请求是否为TLB作废监听请求;
若是,继续判断是否使用了该TLB监听请求对应的虚地址到物理地址的映射关系,若是,则作废对应TLB表项,等待前序写访问请求全部发送完毕之后,发送TLB作废完成请求至TLB作废处理模块;若否,则发送TLB作废拒绝请求到TLB作废处理模块;
若该请求不是TLB作废监听请求,则按原来的Cache一致性协议处理该请求。
在上述的多副本非原子写的TLB作废操作实现方法中,当TLB作废处理模块接收到与之相连的本地CA发出的访问请求时,检测其请求类型;
若该请求是TLB作废请求,则对TLB作废响应计数器进行初始化;产生发往本地CA的TLB作废监听请求存入TLB作废监听请求队列,等待调度成功后发送该监听请求至本地CA;产生发往所有其它TLB作废处理模块的TLB作废请求消息,并通过请求通道将TLB作废请求消息发送至片上互连网络;
若该请求是TLB作废完成请求,则产生发往所有HA和IA的TLB作废完成请求消息,并通过片上互连网络将TLB作废完成请求消息发送到片上互连网络;
若该请求是TLB作废拒绝请求,且TLB作废请求的发起方为本地CA,则将TLB作废响应计数器减n+k,若减操作执行完毕之后TLB作废响应计数器为零,则发送TLB作废完成响应至本地CA;
若该请求是TLB作废拒绝请求,且TLB作废请求的发起方不是本地CA,则产生发往源TLB作废处理模块的TLB作废拒绝响应消息,并通过响应通道将TLB作废拒绝响应消息发送至片上互连网络;
若是其它请求类型,则通过请求通道将该请求消息发送至片上互连网络。
在上述的多副本非原子写的TLB作废操作实现方法中,当TLB作废处理模块接收到来自片上互连网络的响应消息时,检测其响应类型;
若该响应为TLB作废拒绝响应消息,则将TLB作废响应计数器减n+k,若该响应为TLB作废完成响应消息,则将TLB作废响应计数器减1,若减操作执行完毕之后TLB作废响应计数器为零,则发送TLB作废完成响应到本地CA;
若是其它响应类型,则将该响应发送给本地CA。
在上述的多副本非原子写的TLB作废操作实现方法中,当TLB作废处理模块接收到监听消息时,将该消息存入非TLB作废监听请求队列,接收到TLB作废请求消息时,将该消息存入TLB作废监听请求队列,采用公平轮转调度方式从两个队列中选择其中一个请求队列,并将该队列头的监听请求发送到本地CA;
当HA或IA接收到来自片上互连网络的请求消息时,若该消息是TLB作废完成请求消息,则向源TLB作废处理模块返回TLB作废完成响应,否则按原来的Cache一致性协议处理该请求消息。
本发明的优点在于:提供包括三种请求队列、一个TLB作废响应计数器和一个响应通道过滤器的TLB作废处理模块,通过独特的协议流程、处理方法和计数方式确保在TLB作废指令执行完成之时,前序发出的写操作都已真正执行完毕,从而解决了Non-MCAW的TLB作废操作的实现问题。通过写操作到达存储一致性点来作为前序写操作的完成标志,同时通过增加两级广播协议流程和TLB作废响应计数器来解决写操作完成标志的判别问题,具有判断结果可靠,且硬件实现开销较小等优点。
附图说明
图1为未带TLB作废处理模块的多核多线程微处理器架构示意图;
图2为本发明的带TLB作废处理模块的多核多线程微处理器架构示意图;
图3为本发明中CA处理监听请求的处理流程图;
图4为本发明中TLB作废处理模块的访问请求处理流程图;
图5为本发明中TLB作废处理模块的响应消息处理流程图;
图6为本发明中TLB作废处理模块的监听消息和TLB作废请求消息处理流程图;
图7为本发明中HA和IA的请求消息处理流程图;
图8为本发明中TLB作废处理模块的实现装置示意图;
图9为本发明中TLB作废处理协议消息流程图示例。
Cache代理-CA;目录代理—HA;IO代理—IA。
具体实施方式
下面结合附图对本方案进行进一步说明:
如图1-9所示,本发明针对Non-MCAW的TLB作废指令的实现问题,提供了一种多副本非原子写的TLB作废操作实现方法与实现装置。
图1所示为本发明所能适用的多核多线程微处理器架构示意图。多核多线程微处理器架构由m个CA、n个HA和k个IA组成,它们通过片上互连网络进行连接。CA、HA、IA和片上互连网络共同实现了Cache一致性协议,保证Cache中所缓存数据副本的一致性。CA为Cache代理,一般由处理器核、一级指令Cache和一级数据Cache(写穿透Cache)等组成。HA为目录代理,一般由二级Cache、目录控制器、存储控制器等组成。IA为IO代理,一般由IO控制器、IO设备等组成。片上互连网络至少需提供三个消息通道供Cache一致性协议使用,即请求通道、响应通道和监听通道,分别能传输请求消息、响应消息和监听消息,以解决协议死锁问题。为了提升协议性能,片上互连网络也能提供更多的消息通道供Cache一致性协议使用,但对于实现TLB作废操作,本发明只需使用其中的请求通道、响应通道和监听通道即可。片上互连网络为维序网络,从相同源结点(CA、HA或IA)发出的消息会顺序到达同一个目结点(CA、HA或IA)。
在Non-MCAW的情形下,当CA收到TLB作废请求并返回TLB作废响应时,CA只能保证前面发出的写访问请求已全部发送到了片上互连网络上,而无法保证这些写访问请求已经到达了存储一致性点HA或IA,从而无法保证写操作的真正完成。因此,MCAW情形下的TLB作废实现方法不能直接应用于Non-MCAW情形。
如图2所示,该图给出了带TLB作废处理模块的多核多线程处理器架构示意图。为了用较小的硬件开销实现TLB作废操作,减少对CA的修改,图2在CA与片上互连网络之间增加了一个TLB作废处理模块,用于实现TLB作废功能。TLB作废功能实现的关键在于如何使得执行TLB作废指令的CA在收齐所有的TLB作废响应时,所有CA前序发出的所有写访问请求全部到达了对应的存储一致性点HA或IA。TLB作废处理模块可以借助原有的Cache一致性协议,通过两级广播与TLB作废响应计数来实现该功能。
TLB作废处理模块实现了一个TLB作废响应计数器,用于记录本地CA在执行了TLB作废指令之后,还未收到的TLB作废响应数量。一般处理器核在前序的TLB作废指令执行完毕之前不能执行新的TLB作废指令,因此TLB作废响应计数器只需一个即可。TLB作废处理模块在接收到本地CA发出的TLB作废请求时,初始化TLB作废响应计数器,并通过请求通道向所有其它TLB作废处理模块广播TLB作废请求消息,同时也向本地CA发送TLB作废监听请求。TLB作废处理模块在接收到来自片上互连网络的TLB作废请求消息后,向本地CA发送TLB作废监听请求。每个CA(包括与源TLB作废处理模块相连的本地CA)在接收到TLB作废监听请求时,将TLB相关表项作废,并等待前序写访问请求发送完毕,然后通过请求通道向所有存储一致性点HA和IA广播TLB作废完成请求消息。HA和IA在接收到作废完成请求消息后,向发起TLB作废请求的源TLB作废处理模块返回TLB作废完成响应,源TLB作废处理模块为接收到本地CA发出的TLB作废请求的TLB作废处理模块。源TLB作废处理模块在收齐所有TLB作废完成响应后,向本地CA返回TLB作废完成响应。第二级TLB作废完成消息的广播操作保证了在HA或IA返回TLB作废完成响应之前,每个CA的前序写访问请求都已到达了对应的存储一致性点HA或IA(因为片上互连网络为维序网络,当某个CA发出的TLB作废完成消息达到某个HA或IA时,该CA发出的目的地为该HA或IA的前序写访问请求也一定达到了),从而确保了当源TLB作废处理模块收齐所有的TLB作废完成响应时,所有CA的前序写访问请求已真正完成。从中可看出,通过两级广播和将写访问请求完成标志的判别从CA移到存储一致性点HA和IA,实现了Non-MCAW情形下的TLB作废流程。由于系统中有m个CA,n个HA和k个IA,因此源TLB作废处理模块需要收齐的TLB作废响应数量为m*(n+k)。
当CA收到TLB作废监听请求时,如果CA能判断从未使用过与该TLB作废监听请求相对应的虚地址到物理地址的映射关系,那么CA就没有必要进行TLB表项作废和第二级广播操作,因为前序写访问请求从未对相关物理地址进行过写访问。例如,多核多线程微处理器可能工作在逻辑分区模式,不同的CA可能属于不同的逻辑分区,属于不同逻辑分区的CA不会使用相同的虚地址到物理地址的映射关系,因此当CA接收到来自于不同逻辑分区CA发起的TLB作废监听请求时,可以不进行TLB作废相关操作以及第二级广播操作,直接返回TLB作废拒绝响应,从而可以加速TLB作废流程。
如图3所示,该图给出了CA处理监听请求的处理流程。当CA接收到与之相连的TLB作废处理模块发出的监听请求时,检测该请求是否为TLB作废监听请求。
如果该请求是TLB作废监听请求,判断是否使用了该TLB监听请求对应的虚地址到物理地址的映射关系。如果使用了,则作废对应TLB表项,等待前序写访问请求全部发送完毕之后,发送TLB作废完成请求到TLB作废处理模块,TLB作废处理模块通过请求通道向所有存储一致性点HA和IA广播TLB作废完成请求消息;如果未使用,则发送TLB作废拒绝请求到TLB作废处理模块,TLB作废处理模块直接通过响应通道向源TLB作废处理模块返回TLB作废拒绝响应。各CA与片上互连网络的通信都经过相应TLB作废处理模块的转发。
如果该请求不是TLB作废监听请求,则按原来的Cache一致性协议处理该请求。
如图4所示,该图给出了TLB作废处理模块处理来自本地CA的访问请求的处理流程。当TLB作废处理模块接收到与之相连的本地CA发出的访问请求时,检测其请求类型。
如果该请求是TLB作废请求,则对TLB作废响应计数器进行初始化,设置其值为m*(n+k)(m为CA的数量,n为HA的数量,k为IA的数量。);产生发往本地CA的TLB作废监听请求,将该请求存入TLB作废监听请求队列,等待调度成功后发送该监听请求到本地CA;产生发往所有其它TLB作废处理模块的TLB作废请求消息,并通过请求通道将TLB作废请求消息发送到片上互连网络。
如果该请求是TLB作废完成请求,则产生发往所有HA和IA的TLB作废完成请求消息,并通过请求通道将TLB作废完成请求消息发送到片上互连网络。
如果该请求是TLB作废拒绝请求,且TLB作废请求的发起方为本地CA,则将TLB作废响应计数器减n+k,如果减操作执行完毕之后TLB作废响应计数器为零,则发送TLB作废完成响应到本地CA。
如果该请求是TLB作废拒绝请求,且TLB作废请求的发起方不为本地CA,则产生发往源TLB作废处理模块的TLB作废拒绝响应消息,并通过响应通道将TLB作废拒绝响应消息发送到片上互连网络。
如果是其它请求类型,则通过请求通道将该请求消息发送到片上互连网络。
如图5所示,该图给出了TLB作废处理模块处理来自片上互连网络的响应消息的处理流程。当TLB作废处理模块接收到来自片上互连网络的响应消息时,检测其响应类型。
如果该响应为TLB作废拒绝响应消息,则将TLB作废响应计数器减n+k,如果减操作执行完毕之后TLB作废响应计数器为零,则发送TLB作废完成响应到本地CA。
如果该响应为TLB作废完成响应消息,则将TLB作废响应计数器减1,如果减操作执行完毕之后TLB作废响应计数器为零,则发送TLB作废完成响应到本地CA。
如果是其它响应类型,则将该响应发送给本地CA。
如图6所示,该图给出了TLB作废处理模块处理来自片上互连网络的监听消息和TLB作废请求消息的处理流程。当接收到监听消息时,将该消息存入非TLB作废监听请求队列;当接收到TLB作废请求消息时,将该消息存入TLB作废监听请求队列。采用公平轮转调度方式从两个队列中选择其中一个请求队列,并将该队列头的监听请求发送到本地CA。
从上可看出,来自请求通道的TLB作废请求消息会转换为TLB作废监听请求发送给本地CA,这会导致请求通道依赖于监听通道;而TLB作废监听请求又可能会产生TLB作废完成请求消息,这会导致监听通道依赖于请求通道。请求通道和监听通道相互依赖会导致协议死锁,为了防止协议死锁,将TLB作废处理模块设计为能够存放所有可能输入的TLB作废请求消息。由于每个CA最多只能同时发出一个TLB作废请求,因此TLB作废监听请求队列的深度设置为m(即所有CA的数量)就能存放所有的TLB作废请求消息。
如图7所示,该图给出了HA和IA处理来自片上互连网络的请求消息的处理流程。当HA或IA接收到来自片上互连网络的请求消息时,如果该消息是TLB作废完成请求消息,则向发起TLB作废请求的源TLB作废处理模块返回TLB作废完成响应,否则按原来的Cache一致性协议处理该请求消息。
如图8所示,该图给出了TLB作废处理模块的装置示意图,通过该装置实现上述多副本非原子写的TLB作废操作方法。具体为,TLB作废处理模块包括处理器核请求队列、TLB作废监听请求队列、非TLB作废监听请求队列、TLB作废响应计数器以及响应通道过滤器。
处理器核请求队列用于存储来自与之相连的本地CA发出的访问请求;TLB作废监听请求队列用于存储来自片上互连网络的TLB作废请求消息转换为的TLB作废监听请求,同时也存储来自处理器核请求队列的TLB作废请求转换为的TLB作废监听请求;非TLB作废监听请求队列用于存储来自片上互连网络的监听请求。采用公平轮转调度方式从TLB作废监听请求队列和非TLB作废监听请求队列中调度出一个监听请求发送到本地CA。
TLB作废响应计数器用于记录本地CA在执行了TLB作废指令之后,还未收到的TLB作废响应数量,由来自处理器核请求队列的TLB作废请求进行初始化。来自处理器核请求队列的TLB作废拒绝请求可能会使TLB作废响应计数器减n+k,如果发起TLB作废命令的不是本地CA,则该TLB作废拒绝请求通过响应通道过滤器生成TLB作废拒绝响应发送给源TLB作废处理模块,此时该TLB作废响应计数器不用修改,如果发起TLB作废命令的是本地CA,则该TLB作废拒绝请求会使该TLB作废响应计数器减n+k;来自响应通道过滤器的TLB作废拒绝响应消息会使TLB作废响应计数器减n+k,来自响应通道过滤器的TLB作废完成响应消息会使TLB作废响应计数器减1。当TLB作废响应计数器归零后,则会产生TLB作废完成响应发送给本地CA。
响应通道过滤器用于从片上互连网络发往本地CA的响应消息中识别出TLB作废拒绝响应消息和TLB作废完成响应消息,并对TLB作废响应计数器进行响应的减操作,其余响应消息将直接发送给本地CA。响应通道过滤器也会接收来自处理器核请求队列的TLB作废拒绝请求,产生发往源TLB作废处理模块的TLB作废拒绝响应消息,并通过响应通道发送到片上互连网络上。
如图9所示,该图给出了TLB作废处理协议消息流程图的一个示例。假设多核多线程微处理器由三个CA(CA0、CA1、CA2)、两个HA(HA0、HA1)、1个IA和片上互连网络组成。每个CA通过对应的TLB作废处理模块与片上互连网络相连接,其中,CA0与TLB作废处理模块0相连接,CA1与TLB作废处理模块1相连接,CA2与TLB作废处理模块2相连接。
CA0执行了TLB作废指令并向TLB作废处理模块0发出了TLB作废请求TLBINV_REQ。
TLB作废处理模块0接收到TLBINV_REQ之后,将TLB作废响应计数器CNT设置为9,向CA0发送TLB作废监听请求TLBINV_SNP,并向TLB作废处理模块1和TLB作废处理模块2发送TLB作废请求消息TLBINV_REQ。
TLB作废处理模块1和TLB作废处理模块2在接收到TLBINV_REQ之后,分别向CA1和CA2发送TLB作废监听请求TLBINV_SNP。
CA0在接收到TLBINV_SNP之后,向TLB作废处理模块0发送TLB作废完成请求CPLT_REQ;CA1在接收到TLBINV_SNP之后,向TLB作废处理模块1发送TLB作废拒绝请求REJECT_REQ;CA2在接收到TLBINV_SNP之后,向TLB作废处理模块2发送TLB作废完成请求CPLT_REQ。
TLB作废处理模块0在接收到CPLT_REQ之后,分别向HA0、HA1和IA发送TLB作废完成请求消息CPLT_REQ;TLB作废处理模块1在接收到REJECT_REQ之后,向TLB作废处理模块0发送TLB作废拒绝响应消息REJECT_RSP;TLB作废处理模块2在接收到CPLT_REQ之后,分别向HA0、HA1和IA发送TLB作废完成请求消息CPLT_REQ。
HA0、HA1和IA每收到一个CPLT_REQ,就向TLB作废处理模块0发送一个TLB作废完成响应消息CPLT_RSP。
TLB作废处理模块0在接收到REJECT_RSP之后将TLB作废响应计数器CNT减3,且每收到一个CPLT_RSP,就将CNT减1。当CNT被减为0后,TLB作废处理模块0向CA0返回TLB作废完成响应TLBINV_RSP。
注意,本文中的本地即指“对应”“与之相连”的意思,如一个TLB作废处理模块X的本地CA,该本地CA即指X这个TLB作废处理模块对应的那个CA。
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。

Claims (10)

1.一种多副本非原子写的TLB作废操作实现装置,包括采用非原子写实现方式的微处理器架构,所述的微处理器架构包括若干CA、若干HA和若干IA,若干CA通过片上互连网络连接于若干HA和若干IA,其特征在于,每个CA均对应有一TLB作废处理模块,每个TLB作废处理模块分别连接在其对应的CA与片上互连网络之间;
所述的片上互连网络至少具有请求通道、响应通道和监听通道三个消息通道;
所述的TLB作废处理模块包括处理器核请求队列、TLB作废监听请求队列、非TLB作废监听请求队列、TLB作废响应计数器和响应通道过滤器;
处理器核请求队列,用于存储来自与本TLB作废处理模块相连的本地CA发出的访问请求;
TLB作废监听请求队列,用于存储来自片上互连网络的,由TLB作废请求转换而来的TLB作废监听请求;存储来自处理器核请求队列的,由TLB作废请求转换而来的TLB作废监听请求;
非TLB作废监听请求队列,用于存储来自片上互连网络的监听请求;
TLB作废响应计数器,用于记录本地CA在执行了TLB作废指令之后,还未收到的TLB作废响应数量,当TLB作废响应计数器归零后,产生TLB作废完成响应发送给本地CA;
响应通道过滤器,用于从片上互连网络发往本地CA的响应消息中识别出TLB作废拒绝响应消息和TLB作废完成响应消息,并对TLB作废响应计数器进行响应的减操作,其余响应消息直接发送给本地CA;接收来自处理器核请求队列的TLB作废拒绝请求,产生发往源TLB作废处理模块的TLB作废拒绝响应消息,并通过响应通道发送到片上互连网络。
2.根据权利要求1所述的多副本非原子写的TLB作废操作实现装置,其特征在于,采用公平轮转调度方式从TLB作废监听请求队列和非TLB作废监听请求队列中调度出一个监听请求发送至本地CA。
3.根据权利要求1所述的多副本非原子写的TLB作废操作实现装置,其特征在于,TLB作废响应计数器由来自处理器核请求队列的TLB作废请求进行初始化,TLB作废处理模块在接收到本地CA发出的TLB作废请求时,将TLB作废响应计数器初始化为m*(n+k),m为CA的数量,n为HA的数量,k为IA的数量,且
当接收到来自处理器核请求队列的TLB作废拒绝请求时,TLB作废响应计数器减n+k;
接收到来自响应通道过滤器的TLB作废拒绝响应消息时,TLB作废响应计数器减n+k;
接收到来自响应通道过滤器的TLB作废完成响应消息时,TLB作废响应计数器减1。
4.一种多副本非原子写的TLB作废操作实现方法,其特征在于,包括以下步骤:
S1.TLB作废处理模块在接收到本地CA发出的TLB作废请求时,
初始化TLB作废响应计数器,
通过请求通道向所有其它TLB作废处理模块广播TLB作废请求消息,
向本地CA发送TLB作废监听请求;
S2.各TLB作废处理模块接收到来自片上互连网络的TLB作废请求消息后,分别向各自本地的CA发送TLB作废监听请求;
S3.每个CA在接收到TLB作废监听请求时,将TLB相关表项作废,并等待前序写访问请求发送完毕,随后通过请求通道向所有存储一致性点HA和IA广播TLB作废完成请求消息;
S4.HA和IA在接收到作废完成请求消息后,向发起TLB作废请求的源TLB作废处理模块返回TLB作废完成响应;
S5.每接收到一个TLB作废完成响应,源TLB作废处理模块的TLB作废响应计数器记一次数,直到收齐所有TLB作废完成响应,向本地CA返回TLB作废完成响应。
5.根据权利要求4所述的多副本非原子写的TLB作废操作实现方法,其特征在于,步骤S1中,初始化TLB作废响应计数器的值为m*(n+k),m为CA的数量,n为HA的数量,k为IA的数量;
步骤S5中,每接收到一个TLB作废完成响应,源TLB作废处理模块的TLB作废响应计数器减1,如果减操作执行完毕之后TLB作废响应计数器为零,则认为已收齐所有TLB作废完成响应。
6.根据权利要求5所述的多副本非原子写的TLB作废操作实现方法,其特征在于,步骤S2中,当CA收到TLB作废监听请求时,如果CA判断到从未使用过与该TLB作废监听请求相对应的虚地址到物理地址的映射关系,则不进行TLB相关表项作废操作,直接通过响应通道向源TLB作废处理模块返回TLB作废拒绝响应。
7.根据权利要求6所述的多副本非原子写的TLB作废操作实现方法,其特征在于,步骤S3中,当CA接收到相应TLB作废处理模块发出的监听请求时,检测该请求是否为TLB作废监听请求;
若是,继续判断是否使用了该TLB监听请求对应的虚地址到物理地址的映射关系,若是,则作废对应TLB表项,等待前序写访问请求全部发送完毕之后,发送TLB作废完成请求至TLB作废处理模块;若否,则发送TLB作废拒绝请求到TLB作废处理模块;
若该请求不是TLB作废监听请求,则按原来的Cache一致性协议处理该请求。
8.根据权利要求7所述的多副本非原子写的TLB作废操作实现方法,其特征在于,当TLB作废处理模块接收到与之相连的本地CA发出的访问请求时,检测其请求类型;
若该请求是TLB作废请求,则对TLB作废响应计数器进行初始化;产生发往本地CA的TLB作废监听请求存入TLB作废监听请求队列,等待调度成功后发送该监听请求至本地CA;产生发往所有其它TLB作废处理模块的TLB作废请求消息,并通过请求通道将TLB作废请求消息发送至片上互连网络;
若该请求是TLB作废完成请求,则产生发往所有HA和IA的TLB作废完成请求消息,并通过请求通道将TLB作废完成请求消息发送到片上互连网络;
若该请求是TLB作废拒绝请求,且TLB作废请求的发起方为本地CA,则将TLB作废响应计数器减n+k,若减操作执行完毕之后TLB作废响应计数器为零,则发送TLB作废完成响应至本地CA;
若该请求是TLB作废拒绝请求,且TLB作废请求的发起方不是本地CA,则产生发往源TLB作废处理模块的TLB作废拒绝响应消息,并通过响应通道将TLB作废拒绝响应消息发送至片上互连网络;
若是其它请求类型,则通过请求通道将该请求消息发送至片上互连网络。
9.根据权利要求8所述的多副本非原子写的TLB作废操作实现方法,其特征在于,当TLB作废处理模块接收到来自片上互连网络的响应消息时,检测其响应类型;
若该响应为TLB作废拒绝响应消息,则将TLB作废响应计数器减n+k,若该响应为TLB作废完成响应消息,则将TLB作废响应计数器减1,若减操作执行完毕之后TLB作废响应计数器为零,则发送TLB作废完成响应到本地CA;
若是其它响应类型,则将该响应发送给本地CA。
10.根据权利要求9所述的多副本非原子写的TLB作废操作实现方法,其特征在于,当TLB作废处理模块接收到监听消息时,将该消息存入非TLB作废监听请求队列,接收到TLB作废请求消息时,将该消息存入TLB作废监听请求队列,采用公平轮转调度方式从两个队列中选择其中一个请求队列,并将该队列头的监听请求发送到本地CA;
当HA或IA接收到来自片上互连网络的请求消息时,若该消息是TLB作废完成请求消息,则向源TLB作废处理模块返回TLB作废完成响应,否则按原来的Cache一致性协议处理该请求消息。
CN202310338803.7A 2023-03-31 2023-03-31 多副本非原子写的tlb作废操作实现方法与实现装置 Pending CN116594926A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310338803.7A CN116594926A (zh) 2023-03-31 2023-03-31 多副本非原子写的tlb作废操作实现方法与实现装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310338803.7A CN116594926A (zh) 2023-03-31 2023-03-31 多副本非原子写的tlb作废操作实现方法与实现装置

Publications (1)

Publication Number Publication Date
CN116594926A true CN116594926A (zh) 2023-08-15

Family

ID=87597931

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310338803.7A Pending CN116594926A (zh) 2023-03-31 2023-03-31 多副本非原子写的tlb作废操作实现方法与实现装置

Country Status (1)

Country Link
CN (1) CN116594926A (zh)

Similar Documents

Publication Publication Date Title
US7360031B2 (en) Method and apparatus to enable I/O agents to perform atomic operations in shared, coherent memory spaces
US9501425B2 (en) Translation lookaside buffer management
US5490261A (en) Interlock for controlling processor ownership of pipelined data for a store in cache
US8806148B2 (en) Forward progress mechanism for stores in the presence of load contention in a system favoring loads by state alteration
US4463420A (en) Multiprocessor cache replacement under task control
US8799589B2 (en) Forward progress mechanism for stores in the presence of load contention in a system favoring loads
US9170946B2 (en) Directory cache supporting non-atomic input/output operations
US20180336035A1 (en) Method and apparatus for processing instructions using processing-in-memory
US7549025B2 (en) Efficient marking of shared cache lines
CN101617298B (zh) 用于dma、任务终止和同步操作的缓存一致保持
US20070033318A1 (en) Alias management within a virtually indexed and physically tagged cache memory
JPH11506852A (ja) 多数のバスマスタと共用レベル2キャッシュとを備える多レベルキャッシュシステムでのキャッシュスヌーピングオーバーヘッドの低減
US20090216947A1 (en) System, method and processor for accessing data after a translation lookaside buffer miss
US20140101390A1 (en) Computer Cache System Providing Multi-Line Invalidation Messages
JP2019096309A (ja) メンテナンス動作の実行
Kaushik et al. Designing predictable cache coherence protocols for multi-core real-time systems
US20140006716A1 (en) Data control using last accessor information
TWI664571B (zh) 用於進行中操作的指令排序
WO2013186694A2 (en) System and method for data classification and efficient virtual cache coherence without reverse translation
KR20160148333A (ko) 메모리 관리 유닛 및 그 동작 방법
JP2018055568A (ja) 演算処理装置、情報処理装置及び演算処理装置の制御方法
US10628312B2 (en) Producer/consumer paced data transfer within a data processing system having a cache which implements different cache coherency protocols
US5623626A (en) Logical cache memory for multi-processor system
CN108170544B (zh) 面向数据无冲突程序的共享数据动态更新方法
US9158682B2 (en) Cache memory garbage collector

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