CN116594926A - 多副本非原子写的tlb作废操作实现方法与实现装置 - Google Patents
多副本非原子写的tlb作废操作实现方法与实现装置 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 29
- 230000004044 response Effects 0.000 claims abstract description 211
- 238000012545 processing Methods 0.000 claims abstract description 127
- 238000012544 monitoring process Methods 0.000 claims description 36
- 238000013507 mapping Methods 0.000 claims description 16
- 239000003999 initiator Substances 0.000 claims description 7
- 241001522296 Erithacus rubecula Species 0.000 claims description 6
- 239000003795 chemical substances by application Substances 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000005192 partition Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache 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)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System 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/7817—Specially adapted for signal processing, e.g. Harvard architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/682—Multiprocessor TLB consistency
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明公开了一种多副本非原子写的TLB作废操作实现方法与实现装置,提供包括三种请求队列、一个TLB作废响应计数器和一个响应通道过滤器的TLB作废处理模块,通过独特的协议流程、处理方法和计数方式确保在TLB作废指令执行完成之时,前序发出的写操作都已真正执行完毕,从而解决了Non‑MCAW的TLB作废操作的实现问题。通过写操作到达存储一致性点来作为前序写操作的完成标志,同时通过增加两级广播协议流程和TLB作废响应计数器来解决写操作完成标志的判别问题,具有判断结果可靠,且硬件实现开销较小等优点。
Description
技术领域
本发明属于非原子写的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一致性协议处理该请求消息。
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) |
-
2023
- 2023-03-31 CN CN202310338803.7A patent/CN116594926A/zh active Pending
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 |