CN109564543A - 用于多线程式模式中的功率降低的方法和装置 - Google Patents

用于多线程式模式中的功率降低的方法和装置 Download PDF

Info

Publication number
CN109564543A
CN109564543A CN201680088379.3A CN201680088379A CN109564543A CN 109564543 A CN109564543 A CN 109564543A CN 201680088379 A CN201680088379 A CN 201680088379A CN 109564543 A CN109564543 A CN 109564543A
Authority
CN
China
Prior art keywords
thread
virtual address
comparator
address
register
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
CN201680088379.3A
Other languages
English (en)
Other versions
CN109564543B (zh
Inventor
安东尼·J·比贝尔
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Priority to CN202010836401.6A priority Critical patent/CN112114934A/zh
Publication of CN109564543A publication Critical patent/CN109564543A/zh
Application granted granted Critical
Publication of CN109564543B publication Critical patent/CN109564543B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • 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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • G06F1/3225Monitoring of peripheral devices of memory devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/14Power supply arrangements, e.g. power down, chip selection or deselection, layout of wirings or power grids, or multiple supply levels
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7452Multiple parallel or consecutive lookup operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/74591Address table lookup; Address filtering using content-addressable memories [CAM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90339Query processing by using parallel associative memories or content-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6032Way prediction in set-associative cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • 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/683Invalidation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/22Control and timing of internal memory operations
    • G11C2207/2263Write conditionally, e.g. only if new data and old data differ
    • 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)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

描述一种用于降低多线程内容可寻址存储器中的动态功率消耗的方法和装置。所述装置包括第一输入端,所述第一输入端被配置为接收对应于第一线程的第一虚拟地址;第二输入端,所述第二输入端被配置为接收对应于第二线程的第二虚拟地址;寄存器组,所述寄存器组包括多个寄存器,每个寄存器被配置为存储映射到多个物理地址中的一者的二进制字;第一比较器组,所述第一比较器组包括第一多个比较器,每个比较器以完全关联配置联接到所述多个寄存器中的相关联寄存器;第二比较器组,所述第二比较器组包括第二多个比较器,每个比较器以完全关联配置联接到所述多个寄存器中的相关联寄存器。输入到每个比较器组的虚拟地址在对应线程未被选择时维持其前一值。

Description

用于多线程式模式中的功率降低的方法和装置
相关申请的交叉引用
本申请要求2016年8月17日提交的美国非临时专利申请第15/238,920号的权益,所述申请的全部内容通过引用并入文中。
背景技术
相比计算系统受限于管理计算系统可访问的实际存储器,虚拟存储器允许计算系统更好地管理存储器。例如,作为存储器映射机制的虚拟寻址允许计算系统分配非邻接区域到特定应用程序,同时使应用程序看似被分配存储器的一个邻接区域。另外,虚拟存储器功能允许计算系统分配比计算系统中实际可用的存储器更多的存储器到应用程序。每当应用程序引用实现虚拟存储器的系统上的存储器地址(例如,虚拟地址(VA))时,将地址转换为引用实际存储器位置的物理地址(PA)。因为应用程序与存储器频繁相互作用,虚拟存储器系统内的低效和无弹性可引起性能退化。
通过虚拟寻址,处理器可使用通过虚拟地址到物理地址的转换产生的物理地址来访问存储器。为了加速虚拟地址到物理地址的转换进程,处理器可使用转换后备缓冲器(TLB),所述缓冲器是高速缓存虚拟地址到物理地址的转换的内容可寻址存储器(CAM)加上随机访问存储器(RAM)结构。
因此,TLB是在计算系统中用于高速缓存虚拟-到-物理地址转换和操作系统(OS)-页面-粒度元数据(例如,读取/写入许可)的硬件结构。TLB对计算系统中的性能可扩展性至关重要,因为TLB是在每次存储器访问后查找,TLB位于关键路径中,并且每个处理器核心或加速器具有自身的TLB。
微处理器实现多个线程,以便削减单元数目,由此通过利用微处理器中可成为“死”周期,而导致系统看似存在多个处理器。在微处理器中的许多位置处,用线程标识符(ID)标记管道状态,并且处理器中的现有资源在线程之间共享。此资源共享削减单元数目,但可能相对于功率来说价格高昂,尤其在大量电路活动在线程之间各不相同的情况下。
例如,图1示出实现CAM 102的多线程系统100的框图。CAM 102包括单组寄存器104,所述寄存器联接并且对应于单组比较器106以用于执行写入和查找操作。多线程系统100还包括线程0(T0)和线程1(T1),每个线程包括自身的搜索数据寄存器111和112,所述寄存器存储地址或标签以便输入到CAM 102。每个线程的所存储标签被输入到多工器114,所述多工器基于“T1启用”位而选择其中一个标签以输入到CAM 102。接着,输入地址116(即,所选标签)被提供到CAM 102。一旦使用输入地址116执行查找操作,CAM 102基于在寄存器组104中存储的CAM条目而输出匹配结果117(例如,“命中”或“未命中”)。最后,匹配结果117通过AND门118与“任何线程有效”位执行AND操作,从而确保线程(例如,线程0或1)中的一者在输出匹配结果117作为输出119之前有效。
在多线程系统100的典型操作中,输入地址116在线程0与线程1之间来回循环。虽然每个线程共享同一组比较器106,在每一周期可取决于搜索数据寄存器111和112所提供的地址内容而在比较器组106的配置中发生触发。将输入触发到比较器的部件(例如,取决于具体实施,XOR、XNOR、OR或AND门)消耗功率。因此,当触发较大数量个比较器或其部件时,状态发生抖动,从而导致动态功率消耗增大。这在来自一个线程的输入地址的大量位不同于来自第二线程的输入地址的位时尤其可能发生,这归因于线程完全独立。如果触发逐周期发生,那么此类功率消耗可能成本高昂。因此,需要降低在多线程式配置实现的TLB CAM中的功率消耗。
附图说明
可以从结合附图以举例方式给出的以下描述中获得更详细的了解,在附图中:
图1是传统的内容可寻址存储器(CAM)的多线程系统实现的框图;
图2是可实现一个或多个公开实施方案的实例设备的框图;
图3示出根据一个或多个实施方案的在TLB CAM中实现的多位逻辑比较器的示意图;
图4是根据一个或多个实施方案的的多线程TLB CAM的框图;
图5是根据一个或多个实施方案的实现图4的TLB CAM的多线程处理器的框图;以及
图6是根据一个或多个实施方案的多线程式CAM方法的流程图。
实施方式
图2是可实现一个或多个公开实施方案的实例设备200的框图。设备200可以包括例如计算机、游戏设备、手持式设备、机顶盒、电视、移动电话或平板计算机。设备200包括处理器202、存储器204、存储设备206、一个或多个输入设备208和一个或多个输出设备210。设备200还可任选地包括输入驱动器212和输出驱动器214。应当理解,设备200可包括图2中未示出的附加部件。
处理器202可包括中央处理单元(CPU)、图形处理单元(GPU)、位于同一管芯上的CPU和GPU,或一个或多个处理器核心,其中每个处理器核心可以是CPU或GPU。存储器204与处理器202可位于同一管芯上,或可与处理器202分开定位。处理器202可使用转换后备缓冲器(TLB)内容可寻址存储器(CAM)来实现多线程式进程,其中处理器202在线程之间切换执行资源,从而导致并发执行。在共享存储器多处理器环境中的相同多线程式进程中,进程中的每个线程可同时在单独处理器上运行,从而导致并行执行。
存储器204可以包括易失性存储器或非易失性存储器,例如,随机访问存储器(RAM)、动态RAM或高速缓存。
存储装置206可包括固定存储设备或可移动存储设备,例如硬盘驱动器、固态驱动器、光盘或闪存驱动器。输入设备208可包括键盘、小键盘、触摸屏、触摸板、检测器、麦克风、加速计、陀螺仪、生物识别扫描器或网络连接(例如,用于发射和/或接收无线IEEE 802信号的无线局域网卡)。输出设备210可包括显示器、扬声器、打印机、触觉反馈设备、一个或多个灯、天线或网络连接(例如,用于发射和/或接收无线IEEE 802信号的无线局域网卡)。
输入驱动器212与处理器202和输入设备208通信,并且允许处理器202接收来自输入设备208的输入。输出驱动器214与处理器202和输出设备210通信,并且允许处理器202向输出设备210发送输出。应当注意,输入驱动器212和输出驱动器214是任选部件,并且在输入驱动器212和输出驱动器214不存在的情况下,设备200将以相同方式操作。
应当理解,除非另有具体要求,否则术语“虚拟地址”、“输入地址”、“搜索地址”、“输入搜索数据”和“标签”可互换使用,并且在一个或多个方面中一个术语可替换另一术语或与另一术语组合。如本文所用,这些术语是指CAM所搜索的任何二进制查找字,并且可包括页面大小、线程ID(如果适用)和有效是/否位。
如本文所述的系统存储器由操作系统管理并且视需要分配给不同软件应用程序。不同软件应用程序可在一个或多个分区中运行,并且一个或多个分区可运行不同操作系统(OS)。如上所述,虚拟存储器技术可用于此类计算机系统,以便在许多进程与应用程序之间共享计算系统的物理存储器。因此,软件应用程序处理虚拟存储器空间中的有效地址,这允许应用程序在需要时执行一个或多个进程(例如,读取、写入,和/或执行),而无需关注操作发生的实际物理存储器位置。应用程序依赖于将每个应用程序执行从应用程序所使用的有效地址到计算机存储器中的物理地址的映射作为基础的操作系统。地址转换是引用虚拟存储器的有效地址藉以转换到真实存储器地址的机制。地址转换的过程很复杂,如果实现得不好,可在确定处理器的时钟周期的关键路径上结束。
通过多线程式处理器,在每个进程的环境内存在多个执行线程。特定进程的线程以处理器在不同线程之间快速地切换的方式执行,由此使得线程看似同时执行。在多线程的一个简单类型中,一个线程运行直到必须访问芯片外存储器的事件(诸如高速缓存-未命中)为止,从而可能导致长延迟。不再是等待,处理器切换到准备好运行的另一线程。当前一线程的数据到达时,前一线程被放回到准备运行线程的列表。在另一类多线程处理中,处理器每CPU周期切换线程。
每个进程由操作系统来分配资源,诸如处理器、寄存器,等等,并且此类资源被分配到所述进程的线程,由此使得每个线程“拥有”自身的资源,所述资源在线程被用来执行指令时使用。当进程创建时,进程存储在主存储器中。一旦内核将进程指派给处理器,进程就被加载到处理器,并且处理器使用线程的资源执行线程的指令。
线程仲裁器和/或线程优先级确定使用哪个线程来执行指令,并且线程标识符(ID)与所述指令相关联,并且通过各个执行状态遵循所述指令。使用对应于线程ID的线程的资源(诸如寄存器)执行指令。当处理多个线程时,线程仲裁器或线程优先级确定采用的下一线程,并且下一线程的线程ID与下一指令相关联,并且通过各个执行状态遵循下一指令。同样地,使用对应于下一线程的线程ID的线程的资源执行指令。
TLB是存储器管理硬件用以改进虚拟地址转换速度的高速缓存。TLB具有固定数量个槽,所述槽含有地址转换数据(条目),将虚拟存储器地址映射到物理存储器地址。TLB是内容可寻址存储器,其中搜索关键字为虚拟存储器地址,并且搜索结果为物理存储器地址。TLB是单个存储器高速缓存,或者TLB以分级结构组织,如本领域中所公知的。不管如何实现TLB,如果所请求的虚拟地址存在于TLB(即,“TLB命中”)中,那么查找被视为成功的,并且搜索快速地产生匹配,并且返回物理存储器地址以供访问存储器。如果所请求的地址不在TLB中(即,“TLB未命中”),那么通过逐一查看进程的整个页表(通常称为“页面步行”或“页表步行”),转换继续。在确定物理存储器地址之后,虚拟存储器地址到物理存储器地址的映射被加载到相应TLB中(即,取决于哪种处理器类型(CPU或加速器)请求地址映射),以便将虚拟地址映射到正确的物理地址,并且恢复执行程序。
正如高速缓存,用于指令和数据流的单独TLB已提供到许多现代处理器。指令转换后备缓冲器(ITLB)仅处置指令地址。TLB可具有多个级别(例如,L1、L2,等等)。例如,小的“L1”TLB(完全关联)极快,而较大的“L2”TLB(组关联)稍慢。当使用ITLB和数据TLB(DTLB)时,CPU可具有三个或四个TLB(例如,ITLB1、DTLB1、TLB2)。由于L1TLB通常是小的且完全关联的高速缓存,诸如加载、存储和指令提取的存储器访问可在同一时钟周期访问所有页面大小下的L1TLB。然而,L2TLB的大小相对大,因此可能不是完全关联结构。因此,在单个时钟周期,L2LTB可能并不访问(例如,搜索)全部条目,这例如归因于访问RAM阵列的需要。
L1TLB的每个高速缓存包括至少一个完全关联2n字节区段,所述区段取决于访问的顺序性而支持单个周期读取、一个或两个周期写入。每个高速缓存区段包括,例如,64个CAM行,每行选择64个RAM线路中的一者。在L1TLB访问期间,输入地址与CAM中的64个标签比较。如果匹配发生(“命中”),那么启用CAM的匹配线路,并且可访问数据。如果没有标签匹配(“未命中”),那么访问较高阶TLB或外部存储器。如果来自可高速缓存的存储器区域的存储器访问未命中,那么将新数据加载到2n字节区段的64个行线路中的一者中。应当理解,64个CAM行和RAM线路的数量仅用于例示,并且所述数量并非意在限制。
如上所述,TLB包括CAM,以便比较输入搜索数据与所存储的数据的表,并且返回匹配数据的地址。CAM是一种用于某些超高速搜索应用程序的特殊类型计算机存储器。CAM比较输入搜索数据(即,标签)与所存储的数据的表,并且返回匹配数据的地址(或在相关联存储器、匹配数据的情况下)。因此,CAM是比搜索密集型应用程序的算法方法快得多的硬件搜索引擎。CAM由添加有比较电路的传统半导体存储器(例如,静态RAM(SRAM))构成,所述CAM启用搜索操作以在单个时钟周期中完成。
二进制CAM是最简单的CAM类型,所述类型使用全部由1和0组成的数据搜素字。三进制CAM(TCAM)允许针对所存储的数据字中一个或多个位的第三匹配状态“X”或“无关”,因此增大搜索弹性。例如,三进制CAM可具有所存储的字“10XX0”,所述字将匹配四个搜索字“10000”、“10010”、“10100”或“10110”中的任何一个。所增大的搜索弹性带来相比二进制CAM的附加成本,因为内部存储器单元现在必须编码三个可能状态,不再是二进制CAM中的两个状态。此附加状态通常通过添加遮罩位(“相关”或“无关”位)到每个存储器单元来实现。
上文所述的方面中的一个或多个在下文所述的附加实例中实现。
根据实例,提供一种多线程CAM设备。CAM设备包括被配置为接收对应于第一线程的第一虚拟地址的第一输入端,被配置为接收对应于第二线程的第二虚拟地址的第二输入端,包括多个寄存器的寄存器组,每个寄存器被配置为存储映射到多个物理地址中的一者的二进制字,包括第一多个比较器的第一比较器组,每个比较器联接到处于完全关联配置的多个寄存器中的一者,和包括第二多个比较器的第二比较器组,每个比较器联接到处于完全关联配置的多个寄存器中的一者。
具体地,第一多个比较器中的每一个被配置为比较第一虚拟地址跟与其相关联的寄存器中存储的二进制字,以确定第一匹配是否存在,并且第一比较器组被配置为输出第一多个比较器的第一比较结果。类似地,第二多个比较器中的每一个被配置为比较第二虚拟地址跟与其相关联的寄存器中存储的二进制字,以确定第二匹配是否存在,并且第二比较器组被配置为输出第二多个比较器的第二比较结果。
另外,在第一线程停用或无效的情况下,第一多个比较器中的每一个维持对应于输入到第一比较器组的前一第一虚拟地址的第一输入状态,并且在第二线程停用或无效的情况下,第二多个比较器中的每一个维持对应于输入到第二比较器组的前一第二虚拟地址的第二输入状态。
根据另一实例,提供一种多线程CAM方法。方法包括由第一比较器组接收对应于第一线程的第一虚拟地址,以及由第二比较器组接收对应于第二线程的第二虚拟地址。第一比较器组包括第一多个比较器,每个比较器联接到处于完全关联配置的寄存器组的多个寄存器中的一者,并且第二比较器组包括第二多个比较器,每个比较器联接到处于完全关联配置的寄存器组的多个寄存器中的一者。
方法还包括通过第一多个比较器中的每一个,比较第一虚拟地址跟与其相关联的寄存器中所存储的二进制字,以确定第一匹配是否存在,在第一线程停用或无效的情况下,通过第一多个比较器中的每一个,维持对应于输入到第一比较器组的前一第一虚拟地址的第一输入状态,以及通过第一比较器组,输出来自第一多个比较器的第一比较结果。
方法还包括通过第二多个比较器中的每一个,比较第二虚拟地址跟与其相关联的寄存器中所存储的二进制字,以确定第二匹配是否存在,在第二线程停用或无的情况下,通过第二多个比较器中的每一个,维持对应于输入到第二比较器组的前一第二虚拟地址的第二输入状态,以及通过第二比较器组,输出来自第二多个比较器的第二比较结果。
图3示出根据一个或多个实施方案的在CAM中实现的多位逻辑比较器300的示意图。比较器300比较两个二进制字,并且指出是否相等。在此实例中,比较器300为4-位相等比较器,所述比较器包括四个并行XOR门302a、302b、302c和302d以及OR门304。比较器300接收由地址寄存器306提供的4位二进制字ADDR(例如,输入地址或标签),所述二进制字将与TLB寄存器308中所存储的对应于TLB条目的二进制字比较。
在多线程具体实施中,地址寄存器306为对应于线程中的一者(例如,线程0或线程1)的存储单元(例如,搜索数据寄存器或加载存储单元)。因此,多线程具体实施中存在多个地址寄存器306。
每个XOR门302a、302b、302c和302d比较两个字(ADDR和TLB条目)的单个对应位,并且如果位匹配,那么输出0。接着,XOR门302a、302b、302c和302d的输出在OR门304中组合,所述输出305仅当所有XOR门302a、302b、302c和302d支持匹配的输入时为0(“命中”)。因此,翻转为1(基于具体实施设计)的输出305为指出存在命中或并不针对所述比较器的一个CAM匹配线路。
应当理解,逻辑部件的其他类型可用于实现多位逻辑比较器。例如,多位逻辑比较器或者包括用于接收二进制字的并行XNOR门,以及在所有位匹配的情况下输出1(“命中”)的AND门。
每当到部件(例如,XOR门或OR门)的输入状态改变(例如,0到1或1到0)时,部件并且最终比较器300消耗功率。当较大数量个比较器或其部件改变状态时,功率消耗可能成本高昂。这在来自一个线程的输入地址或标签的大量位不同于来自第二线程的输入地址或标签的位时可能发生,这可能随周期而改变。因此,应针对每个线程最小化功率消耗。
图4是针对多线程处理器的每个线程具有冗余(例如,相同)组比较器的TLB CAM结构400的框图。在多线程式环境中,TLB CAM结构400由处理器(例如,处理器202)实现。处理器在执行指令时使用一个或多个执行线程,并且TLB CAM结构实现为L1ITLB。例如,处理器可以单线程模式运行,在所述模式中N个线程中仅有一个启用。在另一实例中,处理器可以多线程模式运行,在所述模式中2到N个线程启用。启用线程在执行指令时使用其相应资源以及停用线程的资源。
TLB CAM结构400包括一组寄存器402,和针对每个线程联接到所述寄存器组402的一组比较器404、406。如本文所用,一组寄存器称之为“寄存器的组”或“寄存器组”,并且一组比较器称为“比较器的组”或“比较器组”。
寄存器组402为RAM或为TLB线性虚拟地址存储单元的其他存储器逻辑。寄存器组402包括,例如,64个寄存器或存储单元,所述寄存器或存储单元也可称为槽或CAM排。每个寄存器含有映射到物理存储器地址的地址转换数据(即,TLB条目)。
TLB CAM结构400还包括两个比较器组404和406,所述比较器组与寄存器组402共享且完全关联。即,寄存器组402中的每个寄存器以一对一方式对应于比较器组404中的比较器,并且以一对一方式对应于比较器组406中的比较器。每个比较器组404和406包括输入(例如,线程0输入405和线程1输入407)以用于从线程的地址寄存器接收虚拟地址。
例如,每个比较器组404和406包括64个比较器(例如,比较器300)。由比较器组404或406(取决于哪个线程启用)中的相关联比较器将在寄存器组402中所存储的每个TLB条目与由线程0或线程1(取决于哪个线程启用)输入的虚拟地址比较。匹配线路408和409指出对应比较器数量中的一者中是否存在匹配,并且匹配线路408和409分别联接到逻辑单元411和412(例如,取决于具体实施为OR或NOR门)。逻辑单元411和412分别输出总结命中指示413和414,所述指示指出来自匹配线路408和409的输入中的一者是否指出匹配或命中。
图5是实现图4的TLB CAM结构400的多线程处理器500的框图。尽管示出了两个线程,应当理解,多线程处理器500可实现两个以上线程,只要针对每个线程存在冗余比较器组并且比较器组共享单个寄存器组,如本文所述。此外,图3-5中示出的CAM具体实施仅为实例,并且CAM可特征化广泛范围内的不同配置和变型。例如,CAM条目的数量可通过变更CAM排的数量而变化。另外,二进制字的长度可有所变化(例如,标签长度可通过使用不同数量个RAM块、使用地址空间不同的RAM块和/或使用具有不同数量个并行门的多位比较器而变化)。
许多其他变型是可能的,包括用于执行二进制字比较、输出匹配命中、输出总结命中指示和输出最终输出结果的逻辑部件的类型,所述变型鉴于附图将显而易见。此外,相对于如本文所述的存储器结构、地址加载和捕获电路和逻辑以及输入选择电路和逻辑等的其他变型是可能的,所述变型鉴于附图也将显而易见。
根据图5,TLB CAM(例如,L1ITLB CAM)中的线程0和线程1各自含有自身的比较器组。这样一来,当输入地址归因于线程完全独立而具有逐周期改变的大量位时,所述机制减少在同时的多线程(SMT)操作期间比较器状态的抖动。因此,不是每个线程0和1共享比较器组,而是针对每个线程存在比较器组,并且到每个比较器组的输入地址当线程未被选择时保持前一值(例如,经由每个线程的捕获寄存器)。这样一来,每个线程的比较器组仅当线程从存储器中的一页移动到另一页时需要改变状态,从而消耗降低功率。因此,动态功率消耗有所降低。
线程0包括地址寄存器501、地址捕获电路503(例如,地址捕获触发器)、连接到比较器组404的输入405的多工器505,以及连接到总结命中指示413的AND门507。线程1包括地址寄存器502、地址捕获电路504(例如,地址捕获触发器)、连接到比较器组406的输入407的多工器506,以及连接到总结命中指示414的AND门508。AND门507和508的输出被提供到OR门510的输入,并且OR门510输出最终输出511,所述输出指出“命中”或“未命中”。如上图4中所述,比较器组404和406以完全关联方式联接到寄存器组402。
虚拟地址被同时或不同时加载到地址寄存器501和502或同时或不同时从地址寄存器501和502输出。虚拟地址从地址寄存器501和502输出,并且由地址捕获电路503和504捕获,由此使得当线程(即,线程0或1)未被选择时,到相应比较器组404和406的输入维持在其前一值。因此,当线程不启用和/或有效时,相应比较器组404和406的输入状态维持其前一值,如由对应的启用且有效的输入(例如,T0启用且有效的输入或T1启用且有效的输入)所指示。
对应的启用且有效的输入如下文所述是单个位,但不限于此。或者,对应的启用且有效的输入由两个单个位表示,其中一个位表示线程的启用状态,而另一个位表示线程的有效性状态,所述两个位提供为两个独立输入。
因此,当T0启用且有效输入为0时,线程0停用,并且在地址捕获电路503中所存储的虚拟地址由多工器505选择并输入到比较器组404。另一方面,当T0启用且有效输入为1时,在地址寄存器501中所存储的虚拟地址由多工器505选择并输入到比较器组404。接着,比较器组404基于由多工器505输入的虚拟地址而针对由寄存器组402提供的每个TLB项目执行比较。最终,总结命中指示413被输出并且馈送到AND门507。在输出任何命中结果之前,经由T0启用且有效的输入,AND门507确保线程0是启用且有效的。因此,如果线程0不启用/有效,即使存在由总结命中指示413指出的命中,AND门507的输出将为0(即,未命中)。仅当存在由总结命中指示413指出的命中并且线程0启用/有效的(如由T0启用且有效的输入指出)时,AND门507才输出命中指示。
类似地,当T1启用且有效输入为0时,线程1停用,并且在地址捕获电路504中所存储的虚拟地址由多工器506选择并输入到比较器组406。另一方面,当T1启用且有效输入为1时,在地址寄存器502中所存储的虚拟地址由多工器506选择并输入到比较器组406。接着,比较器组406基于由多工器506输入的虚拟地址而针对由寄存器组402提供的每个TLB项目执行比较。最终,总结命中指示414被输出并且馈送到AND门508。在输出任何命中结果之前,经由T1启用且有效的输入,AND门508确保线程1是启用且有效的。因此,如果线程1不启用/有效,即使存在由总结命中指示414指出的命中,AND门508的输出将为0(即,未命中)。仅当存在由总结命中指示414指出的命中并且线程1启用/有效(如由T1启用且有效的输入指出)时,AND门508才输出命中指示。
AND门507和508各自输出其结果到OR门510,并且OR门510基于是否存在由AND门507或AND门508指出的启用/有效的命中而输出最终输出511(即,命中或未命中)。还应当理解,AND门507和508以及OR门510可并入到TLB CAM结构400内或其外部。
图6是根据一个或多个实施方案的多线程式CAM方法600的流程图。尽管流程图描绘一系列依序操作,除非明确说明,否则不应从有关具体执行次序的顺序、操作或其部分的依序而非并发或以重叠方式的执行、或专有地描绘而不会出现干涉或中间操作的操作执行进行推断。实例中所描绘的进程由例如上文所述的存储器管理硬件实现。
多线程式CAM方法600包括将TLB条目存储在单个寄存器组中(操作601),并且选择性地激活/去激活第一线程和第二线程,由此使得其中一个启用,而另一个停用(操作602)。方法600还包括确定第一线程是否启用(操作603),并且确定第二线程是否启用(操作604).应当理解,执行操作603和604以及跟随的相应操作的定时,包括同时执行操作、在至少一定程度上重叠、不重叠,或提前或落后。如果第一线程停用,那么第一寄存器组比较TLB条目与前一第一虚拟地址(VA)(操作605),并且,如果第一线程启用,那么第一寄存器组比较TLB条目与启用的第一VA(操作606)。类似地,如果第二线程停用,那么第二寄存器组比较TLB条目与前一第二虚拟地址(VA)(操作607),并且,如果第二线程启用,那么第二寄存器组比较TLB条目与启用的第二VA(操作608)。第一比较器组与第二比较器组彼此独立,并且都与单个寄存器组完全关联。因此,存在专用于每个线程的冗余比较器组,以用于比较对应线程上提供的虚拟地址与单组TLB条目。此外,当线程停用时,到每个比较器组的输入虚拟地址经由地址捕获而保持其前一值。
方法600还包括基于第一比较器组的比较结果而生成第一总结命中指示(操作609),以及基于第二比较器组的比较结果而生成第二总结命中指示(操作610)。基于第一和第二总结命中指示而生成最终输出(例如,“命中”或“未命中”)(操作611)。具体地,基于对应于启用且有效的线程的第一或第二总结命中指示而生成最终输出。忽视停用或无效线程的比较结果(和命中总结指示)。
本文公开一种多线程CAM设备。多线程CAM设备包括被配置为接收对应于第一线程的第一虚拟地址的第一输入端,被配置为接收对应于第二线程的第二虚拟地址的第二输入端,包括多个寄存器的寄存器组,每个寄存器被配置为存储映射到多个物理地址中的一者的二进制字,第一比较器组,和第二比较器组。第一比较器组包括第一多个比较器,每个比较器联接到处于完全关联配置的多个寄存器中的一者,由此使得第一多个比较器中的每一个被配置为当第一线程启用且有效时接收第一虚拟地址并且当第一线程停用或无效时接收前一第一虚拟地址。第二比较器组包括第二多个比较器,每个比较器联接到处于完全关联配置的多个寄存器中的一者,由此使得第二多个比较器中的每一个被配置为当第二线程启用且有效时接收第二虚拟地址并且当第二线程停用或无效时接收前一第二虚拟地址。前一第一虚拟地址是上次第一线程启用且有效时第一输入端所接收的第一虚拟地址,并且前一第二虚拟地址是上次第二线程启用且有效时第二输入端所接收的第二虚拟地址。
在一些实例中,第一比较器组与第二比较器组分开,并且等同于第二比较器组。
在一些实例中,第一多个比较器中的每一个被配置为当第一线程停用或无效时,维持对应于输入到第一比较器组的前一第一虚拟地址的第一输入状态,并且第二多个比较器中的每一个被配置为当第二线程停用或无效时,维持对应于输入到第二比较器组的前一第二虚拟地址的第二输入状态。
在一些实例中,第一多个比较器的每一者被配置为比较基于第一线程的启用状态的第一虚拟地址和前一第一虚拟地址中的一者跟与其相关联的寄存器中所存储的二进制字,以用于确定第一匹配是否存在,并且第一比较器组被配置为输出第一多个比较器的第一比较结果,并且第二多个比较器的每一者被配置为比较基于第二线程的启用状态的第二虚拟地址和前一第二虚拟地址中的一者跟与其相关联的寄存器中所存储的二进制字,以用于确定第二匹配是否存在,并且第二比较器组被配置为输出第二多个比较器的第二比较结果。
在一些实例中,多线程CAM设备包括联接到第一比较器组的第一多个匹配线路的第一逻辑部件,以及联接到第二比较器组的第二多个匹配线路的第二逻辑部件。第一逻辑部件被配置为基于在第一多个匹配线路上接收的第一比较结果而输出第一总结命中指示,并且第二逻辑部件被配置为基于在第二多个匹配线路上接收的第二比较结果而输出第二总结命中指示。
在一些实例中,第一总结命中指示指出在第一多个比较器中的至少一个将第一虚拟地址跟与其相关联的寄存器中所存储的二进制字匹配的情况下第一匹配存在,并且第二总结命中指示指出在第二多个比较器中的至少一个将第二虚拟地址跟与其相关联的寄存器中所存储的二进制字匹配的情况下第二匹配存在。
在一些实例中,多线程CAM设备包括逻辑电路,所述逻辑电路被配置为接收第一总结命中指示和第二总结命中指示,并且输出最终结果。因此,每次第一线程和第二线程中的一者启用,并且在第一线程启用的情况下最终结果为第一总结命中指示,并且在第二线程启用的情况下最终结果为第二总结命中指示。
在一些实例中,第一比较器组被配置为基于第一多个比较器而输出第一比较结果,以用于确定至少一个第一匹配是否存在,并且第二比较器组被配置为基于第二多个比较器而输出第二比较结果,以用于确定至少一个第二匹配是否存在。
在一些实例中,多线程CAM包括逻辑电路,所述逻辑电路被配置为基于第一多个比较器的第一比较结果而接收第一总结命中指示,基于第二多个比较器的第二比较结果而接收第二总结命中指示,并且输出最终结果。因此,每次第一线程和第二线程中的一者启用,并且在第一线程启用的情况下最终结果为第一总结命中指示,并且在第二线程启用的情况下最终结果为第二总结命中指示。
在一些实例中,前一第一虚拟地址是上次第一线程启用且有效时第一地址寄存器所提供的第一虚拟地址,并且前一第二虚拟地址是上次第二线程启用且有效时第二地址寄存器所提供的第二虚拟地址。
在一些实例中,在第一线程启用且有效的情况下,第一多个比较器中的每一个从第一地址寄存器接收第一虚拟地址,并且在第二线程启用且有效的情况下,第二多个比较器中的每一个从第二地址寄存器接收第二虚拟地址。
在一些实例中,多线程CAM设备包括第一地址寄存器,所述第一地址寄存器被配置为在第一线程启用且有效的情况下发送第一虚拟地址到第一比较器组,和第二地址寄存器,所述第二地址寄存器被配置为在第二线程启用且有效的情况下发送第二虚拟地址到第二比较器组。
在一些实例中,多线程CAM设备包括第一地址寄存器和第二地址寄存器。第一地址寄存器被配置为存储第一虚拟地址,并且第一比较器组被配置为在第一线程启用且有效的情况下从第一地址寄存器接收第一虚拟地址。第二地址寄存器被配置为存储第二虚拟地址,并且第二比较器组被配置为在第二线程启用且有效的情况下从第二地址寄存器接收第二虚拟地址。
在一些实例中,多线程CAM设备包括第一地址捕获电路和第二地址捕获电路。第一地址寄存器被配置为存储第一虚拟地址作为前一第一虚拟地址,并且第一比较器组被配置为在第一线程停用或无效的情况下从第一地址捕获电路接收前一第一虚拟地址。第二地址寄存器被配置为存储第二虚拟地址作为前一第一虚拟地址,并且第二比较器组被配置为在第二线程停用或无效的情况下从第二地址捕获电路接收前一第二虚拟地址。
在一些实例中,前一第一虚拟地址是上次第一线程启用且有效时由第一地址寄存器提供到第一地址捕获电路的第一虚拟地址,并且前一第二虚拟地址是上次第二线程启用且有效时由第二地址寄存器提供到跌地址捕获电路的第二虚拟地址。
在一些实例中,多线程CAM设备为指令转换后备缓冲器CAM。
提供一种多线程CAM方法。第一比较器组接收对应于第一线程的第一虚拟地址。第一比较器组包括第一多个比较器,每个比较器联接到处于完全关联配置的寄存器组的多个寄存器中的一者,并且当第一线程启用且有效时接收第一虚拟地址。第二比较器组接收对应于第二线程的第二虚拟地址。第二比较器组包括第二多个比较器,每个比较器联接到处于完全关联配置的寄存器组的多个寄存器中的一者,并且当第二线程启用且有效时接收第二虚拟地址。在第一线程停用或无效时,第一比较器组接收对应于第一线程的前一第一虚拟地址。在第二线程停用或无效时,第二比较器组接收对应于第二线程的前一第二虚拟地址。前一第一虚拟地址是上次第一线程启用且有效时所接收的第一虚拟地址,并且前一第二虚拟地址是上次第二线程启用且有效时所接收的第二虚拟地址。
在一些实例中,在第一线程停用或无效的情况下,通过第一多个比较器中的每一个,维持对应于输入到第一比较器组的前一第一虚拟地址的第一输入状态。另外,在第二线程停用或无效的情况下,通过第二多个比较器中的每一个,维持对应于输入到第二比较器组的前一第二虚拟地址的第二输入状态。
在一些实例中,第一多个比较器中的每一个比较基于第一线程的启用状态的第一虚拟地址和前一第一虚拟地址中的一者跟与其相关联的寄存器中所存储的二进制字,以用于确定第一匹配是否存在。来自第一多个比较器的第一比较结果由第一比较器组输出。第二多个比较器中的每一个比较基于第二线程的启用状态的第二虚拟地址和前一第二虚拟地址中的一者跟与其相关联的寄存器中所存储的二进制字,以用于确定第二匹配是否存在。来自第二多个比较器的第二比较结果由第二比较器组输出。
在一些实例中,第一总结命中指示由第一逻辑部件基于第一比较结果而生成。第一总结命中指示指出在第一多个比较器中的至少一个将第一虚拟地址跟与其相关联的寄存器中所存储的二进制字匹配的情况下第一匹配存在。第二总结命中指示由第二逻辑部件基于第二比较结果而生成。第二总结命中指示指出在第二多个比较器中的至少一个将第二虚拟地址跟与其相关联的寄存器中所存储的二进制字匹配的情况下第二匹配存在。
在一些实例中,逻辑电路接收第一总结命中指示和第二总结命中指示,并且逻辑电路基于第一总结命中指示和第二总结命中指示而生成最终结果,由此使得每次第一线程和第二线程中的一者启用,并且在第一线程启用的情况下最终结果为第一总结命中指示,并且在第二线程启用的情况下最终结果为第二总结命中指示。
在一些实例中,在第一线程启用且有效的情况下,第一比较器组从第一地址寄存器接收第一虚拟地址。在第二线程启用且有效的情况下,第二比较器组从第二地址寄存器接收第二虚拟地址。
在一些实例中,第一线程和第二线程中的第一者由处理器选择性地激活,而第一线程和第二线程中的第二者由处理器选择性地去激活。在第一线程停用或无效的情况下,第一比较器组从第一地址捕获电路接收前一第一虚拟地址,由此使得前一第一虚拟地址是上次第一线程启用且有效时所接收的第一虚拟地址。在第二线程停用或无效的情况下,第二比较器组从第二地址捕获电路接收前一第二虚拟地址,由此使得前一第二虚拟地址是上次第二线程启用且有效时所接收的第二虚拟地址。
在一些实例中,在第一线程启用且有效的情况下第一比较器组从第一地址寄存器接收第一虚拟地址,并且在第二线程启用且有效的情况下第二比较器组从第二地址寄存器接收第二虚拟地址。
应当理解,基于本文中的公开内容,许多变型是可能的。尽管上文以特定组合描述了特征和元件,但是每个特征或元件都可以在没有其它特征和元件的情况下单独使用,或者在具有或不具有其它特征和元件的情况下以各种组合来使用。
尽管已在装置的上下文中描述一些方面,清晰明了的是,这些方面也表示对应方法的描述,其中框或设备对应于方法步骤或方法步骤的特征。类似地,在方法步骤的上下文中描述的方面也表示对应框或项或对应装置特征的描述。方法步骤的一些或全部可由(或使用)硬件装置来执行,例如,微处理器、可编程计算机或电子电路。在一些实施方案中,方法步骤中的一个或多个可由此类装置执行。
有关上述部件或结构(组件、设备、电路、系统,等等)所执行的各种功能,除非另外指明,否则用于描述此类部件的术语(包括涉及“构件”时)意在对应于执行所述部件的指定功能的任何部件或结构(即,功能上等效),即使与执行本文所例示发明的示例性具体实施的功能的公开结构在结构上不等效。
可以在通用计算机、处理器或处理器核心中实现所提供的方法。以举例的方式,合适的处理器包括通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP内核相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路、其他任何类型的集成电路(IC)和/或状态机。通过使用处理后的硬件描述语言(HDL)指令和包括网表的其它中间数据(这些指令能够存储在计算机可读介质上)的结果对制造过程进行配置,可以制造此类处理器。此类处理的结果可为集成电路光罩,接着所述集成电路光罩用于半导体制造工艺以制造可实现实施方案的方面的处理器。
本文提供的方法或流程图可以在计算机程序、软件或固件中实现,所述计算机程序、软件或固件被并入非暂时性计算机可读存储介质中以便由通用计算机或处理器执行。非暂时性计算机可读存储介质的实例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓冲存储器、半导体存储器设备、诸如内部硬盘和可移除磁盘的磁性介质、磁光介质、以及诸如CD-ROM盘和数字通用光盘(DVD)的光学介质。

Claims (20)

1.一种多线程内容可寻址存储器(CAM)设备,其包括:
第一输入端,所述第一输入端被配置为接收对应于第一线程的第一虚拟地址;
第二输入端,所述第二输入端被配置为接收对应于第二线程的第二虚拟地址;
寄存器组,所述寄存器组包括多个寄存器,每个寄存器被配置为存储映射到多个物理地址中的一者的二进制字;
第一比较器组,所述第一比较器组包括第一多个比较器,每个比较器以完全关联配置联接到所述多个寄存器中的一者,其中所述第一多个比较器中的每一个被配置为当所述第一线程启用且有效时接收所述第一虚拟地址并且当所述第一线程停用或无效时接收前一第一虚拟地址,其中所述前一第一虚拟地址是上次所述第一线程启用且有效时所述第一输入端所接收的所述第一虚拟地址;以及
第二比较器组,所述第二比较器组包括第二多个比较器,每个比较器以所述完全关联配置联接到所述多个寄存器中的一者,其中所述第二多个比较器中的每一个被配置为当所述第二线程启用且有效时接收所述第二虚拟地址并且当所述第二线程停用或无效时接收前一第二虚拟地址,其中所述前一第二虚拟地址是上次所述第二线程启用且有效时所述第二输入端所接收的所述第二虚拟地址。
2.如权利要求1所述的多线程CAM设备,其中,所述第一比较器组与所述第二比较器组分开,并且等同于所述第二比较器组。
3.如权利要求1所述的多线程CAM设备,其中:
所述第一多个比较器中的每一个被配置为当所述第一线程停用或无效时,维持对应于输入到所述第一比较器组的所述前一第一虚拟地址的第一输入状态,并且
所述第二多个比较器中的每一个被配置为当所述第二线程停用或无效时,维持对应于输入到所述第二比较器组的所述前一第二虚拟地址的第二输入状态。
4.如权利要求1所述的多线程CAM设备,其中:
所述第一多个比较器中的每一个被配置为比较基于所述第一线程的启用状态的所述第一虚拟地址和所述前一第一虚拟地址中的一者跟与其相关联的寄存器中所存储的二进制字,以用于确定第一匹配是否存在,并且所述第一比较器组被配置为输出所述第一多个比较器的第一比较结果,并且
所述第二多个比较器中的每一个被配置为比较基于所述第二线程的启用状态的所述第二虚拟地址和所述前一第二虚拟地址中的一者跟与其相关联的所述寄存器中所存储的所述二进制字,以用于确定第二匹配是否存在,并且所述第二比较器组被配置为输出所述第二多个比较器的第二比较结果。
5.如权利要求4所述的多线程CAM设备,其还包括:
第一逻辑部件,所述第一逻辑部件联接到所述第一比较器组的第一多个匹配线路;以及
第二逻辑部件,所述第二逻辑部件联接到所述第二比较器组的第二多个匹配线路,
其中,所述第一逻辑部件被配置为基于在所述第一多个匹配线路上接收的所述第一比较结果而输出第一总结命中指示,并且
所述第二逻辑部件被配置为基于在所述第二多个匹配线路上接收的所述第二比较结果而输出第二总结命中指示。
6.如权利要求5所述的多线程CAM设备,其中:
所述第一总结命中指示指出在所述第一多个比较器中的至少一个将所述第一虚拟地址跟与其相关联的所述寄存器中所存储的所述二进制字匹配的情况下,所述第一匹配存在,并且
所述第二总结命中指示指出在所述第二多个比较器中的至少一个使所述第二虚拟地址跟与其相关联的所述寄存器中所存储的所述二进制字匹配的情况下,所述第二匹配存在。
7.如权利要求5所述的多线程CAM设备,其还包括:
逻辑电路,所述逻辑电路被配置为接收所述第一总结命中指示和所述第二总结命中指示,并且输出最终结果,
其中,每次所述第一线程和所述第二线程中的一者启用,并且在所述第一线程启用的情况下所述最终结果是所述第一总结命中指示,并且在所述第二线程启用的情况下所述最终结果是所述第二总结命中指示。
8.如权利要求4所述的多线程CAM设备,其还包括:
逻辑电路,所述逻辑电路被配置为基于所述第一多个比较器的所述第一比较结果而接收第一总结命中指示,基于所述第二多个比较器的所述第二比较结果而接收第二总结命中指示,并且输出最终结果,
其中,每次所述第一线程和所述第二线程中的一者启用,并且在所述第一线程启用的情况下所述最终结果是所述第一总结命中指示,并且在所述第二线程启用的情况下所述最终结果是所述第二总结命中指示。
9.如权利要求1所述的多线程CAM设备,其中,在所述第一线程启用且有效的情况下,所述第一多个比较器中的每一个从第一地址寄存器接收所述第一虚拟地址,并且
在所述第二线程启用且有效的情况下,所述第二多个比较器中的每一个从第二地址寄存器接收所述第二虚拟地址。
10.如权利要求1所述的多线程CAM设备,其还包括:
第一地址寄存器,所述第一地址寄存器被配置为存储所述第一虚拟地址,并且所述第一比较器组被配置为在所述第一线程启用且有效的情况下从所述第一地址寄存器接收所述第一虚拟地址;以及
第二地址寄存器,所述第二地址寄存器被配置为存储所述第二虚拟地址,并且所述第二比较器组被配置为在所述第二线程启用且有效的情况下从所述第二地址寄存器接收所述第二虚拟地址。
11.如权利要求1所述的多线程CAM设备,其还包括:
第一地址捕获电路,所述第一地址捕获电路被配置为存储所述第一虚拟地址作为所述前一第一虚拟地址,并且所述第一比较器组被配置为在所述第一线程停用或无效的情况下从所述第一地址捕获电路接收所述前一第一虚拟地址;以及
第二地址捕获电路,所述第二地址捕获电路被配置为存储所述第二虚拟地址作为所述前一第一虚拟地址,并且所述第二比较器组被配置为在所述第二线程停用或无效情况下从所述第二地址捕获电路接收所述前一第二虚拟地址。
12.如权利要求11所述的多线程CAM设备,其中,所述前一第一虚拟地址是上次所述第一线程启用且有效时由第一地址寄存器提供到所述第一地址捕获电路的所述第一虚拟地址,并且
所述前一第二虚拟地址是上次所述第二线程启用且有效时由第二地址寄存器提供到所述第二地址捕获电路的所述第二虚拟地址。
13.如权利要求1所述的多线程CAM设备,其中,所述多线程CAM设备为指令转换后备缓冲器CAM。
14.一种多线程内容可寻址存储器(CAM)方法,其包括:
第一比较器组接收对应于第一线程的第一虚拟地址,其中,所述第一比较器组包括第一多个比较器,每个比较器以完全关联配置联接到寄存器组的多个寄存器中的一者,并且所述第一虚拟地址是在所述第一线程启用且有效时接收的;
第二比较器组接收对应于第二线程的第二虚拟地址,其中,所述第二比较器组包括第二多个比较器,每个比较器以所述完全关联配置联接到所述寄存器组的所述多个寄存器中的一者,并且所述第二虚拟地址是在所述第二线程启用且有效时接收的;
当所述第一线程停用或无效时,所述第一比较器组接收对应于所述第一线程的前一第一虚拟地址,其中所述前一第一虚拟地址是上次所述第一线程启用且有效时所接收的所述第一虚拟地址;
当所述第二线程停用或无效时,所述第二比较器组接收对应于所述第二线程的前一第二虚拟地址,其中所述前一第二虚拟地址是上次所述第二线程启用且有效时所接收的所述第二虚拟地址;
所述第一多个比较器中的每一个比较基于所述第一线程的启用状态的所述第一虚拟地址和所述前一第一虚拟地址中的一者跟与其相关联的寄存器中所存储的二进制字,以用于确定第一匹配是否存在;
所述第二多个比较器中的每一个比较基于所述第二线程的启用状态的所述第二虚拟地址和所述前一第二虚拟地址中的一者跟与其相关联的所述寄存器中所存储的所述二进制字,以用于确定第二匹配是否存在;
所述第一比较器组输出来自所述第一多个比较器的第一比较结果;并且
所述第二比较器组输出来自所述第二多个比较器的第二比较结果。
15.如权利要求14所述的多线程CAM方法,其还包括:
在所述第一线程停用或无效的情况下,所述第一多个比较器中的每一个维持对应于输入到所述第一比较器组的所述前一第一虚拟地址的第一输入状态,并且
在所述第二线程停用或无效的情况下,所述第二多个比较器中的每一个维持对应于输入到所述第二比较器组的所述前一第二虚拟地址的第二输入状态。
16.如权利要求14所述的多线程CAM方法,其还包括:
第一逻辑部件基于所述第一比较结果而生成第一总结命中指示,所述第一总结命中指示指出在所述第一多个比较器中的至少一个将所述第一虚拟地址跟与其相关联的所述寄存器中所存储的所述二进制字匹配的情况下所述第一匹配存在;并且
第二逻辑部件基于所述第二比较结果而生成第二总结命中指示,所述第二总结命中指示指出在所述第二多个比较器中的至少一个将所述第二虚拟地址跟与其相关联的所述寄存器中所存储的所述二进制字匹配的情况下所述第二匹配存在。
17.如权利要求16所述的多线程CAM方法,其还包括:
逻辑电路接收所述第一总结命中指示和所述第二总结命中指示;并且
所述逻辑电路基于所述第一总结命中指示和所述第二总结命中指示而生成最终结果,其中每次所述第一线程和所述第二线程中的一者启用,并且在所述第一线程启用的情况下所述最终结果是所述第一总结命中指示,并且在所述第二线程启用的情况下所述最终结果是所述第二总结命中指示。
18.如权利要求14所述的多线程CAM方法,其还包括:
在所述第一线程启用且有效的情况下,所述第一比较器组从第一地址寄存器接收所述第一虚拟地址;并且
在所述第二线程启用且有效的情况下,所述第二比较器组从第二地址寄存器接收所述第二虚拟地址。
19.如权利要求14所述的多线程CAM方法,其还包括:
处理器选择性地激活所述第一线程和所述第二线程中的第一者;
所述处理器选择性地去激活所述第一线程和所述第二线程中的第二者;
在所述第一线程停用或无效的情况下,所述第一比较器组从第一地址捕获电路接收所述前一第一虚拟地址,其中所述前一第一虚拟地址是上次所述第一线程启用且有效时所接收的所述第一虚拟地址;并且
在所述第二线程停用或无效的情况下,所述第二比较器组从第二地址捕获电路接收所述前一第一虚拟地址,其中所述前一第二虚拟地址是上次所述第二线程启用且有效时所接收的所述第二虚拟地址。
20.如权利要求19所述的多线程CAM方法,其还包括:
在所述第一线程启用且有效的情况下,所述第一比较器组从第一地址寄存器接收所述第一虚拟地址;并且
在所述第二线程启用且有效的情况下,所述第二比较器组从第二地址寄存器接收所述第二虚拟地址。
CN201680088379.3A 2016-08-17 2016-09-21 用于多线程式模式中的功率降低的方法和装置 Active CN109564543B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010836401.6A CN112114934A (zh) 2016-08-17 2016-09-21 用于多线程式模式中的功率降低的方法和装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/238,920 2016-08-17
US15/238,920 US9864700B1 (en) 2016-08-17 2016-08-17 Method and apparatus for power reduction in a multi-threaded mode
PCT/US2016/052892 WO2018034679A1 (en) 2016-08-17 2016-09-21 Method and apparatus for power reduction in a multi-threaded mode

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202010836401.6A Division CN112114934A (zh) 2016-08-17 2016-09-21 用于多线程式模式中的功率降低的方法和装置

Publications (2)

Publication Number Publication Date
CN109564543A true CN109564543A (zh) 2019-04-02
CN109564543B CN109564543B (zh) 2020-09-15

Family

ID=60812795

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201680088379.3A Active CN109564543B (zh) 2016-08-17 2016-09-21 用于多线程式模式中的功率降低的方法和装置
CN202010836401.6A Pending CN112114934A (zh) 2016-08-17 2016-09-21 用于多线程式模式中的功率降低的方法和装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202010836401.6A Pending CN112114934A (zh) 2016-08-17 2016-09-21 用于多线程式模式中的功率降低的方法和装置

Country Status (6)

Country Link
US (2) US9864700B1 (zh)
EP (1) EP3500934A4 (zh)
JP (1) JP6767569B2 (zh)
KR (1) KR102661483B1 (zh)
CN (2) CN109564543B (zh)
WO (1) WO2018034679A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210349805A1 (en) * 2019-05-02 2021-11-11 Microsoft Technology Licensing, Llc Coprocessor-based logging for time travel debugging

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105635067B (zh) * 2014-11-04 2019-11-15 华为技术有限公司 报文发送方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050044319A1 (en) * 2003-08-19 2005-02-24 Sun Microsystems, Inc. Multi-core multi-thread processor
US20050050296A1 (en) * 2003-08-28 2005-03-03 Intel Corporation Method for page sharing in a processor with multiple threads and pre-validated caches
US20060136659A1 (en) * 2004-12-21 2006-06-22 Sanjeev Jain Processor having content addressable memory with command ordering
WO2007027671A2 (en) * 2005-08-29 2007-03-08 Searete Llc Scheduling mechanism of a hierarchical processor including multiple parallel clusters
US20070296729A1 (en) * 2006-06-21 2007-12-27 Yun Du Unified virtual addressed register file
US20090190404A1 (en) * 2008-01-25 2009-07-30 Roohparvar Frankie F Nand flash content addressable memory
CN102200930A (zh) * 2011-05-26 2011-09-28 华为数字技术有限公司 同步变量映射方法及装置、同步变量释放方法及同步变量删除方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6430667B1 (en) * 2000-04-13 2002-08-06 International Business Machines Corporation Single-level store computer incorporating process-local address translation data structures
US6604187B1 (en) * 2000-06-19 2003-08-05 Advanced Micro Devices, Inc. Providing global translations with address space numbers
US20050216655A1 (en) 2004-03-25 2005-09-29 Rosenbluth Mark B Content addressable memory constructed from random access memory
US7281083B2 (en) 2004-06-30 2007-10-09 Intel Corporation Network processor with content addressable memory (CAM) mask
US7467256B2 (en) 2004-12-28 2008-12-16 Intel Corporation Processor having content addressable memory for block-based queue structures
US20070083735A1 (en) 2005-08-29 2007-04-12 Glew Andrew F Hierarchical processor
US8250345B2 (en) 2007-09-28 2012-08-21 International Business Machines Corporation Structure for multi-threaded processing
US8245016B2 (en) 2007-09-28 2012-08-14 International Business Machines Corporation Multi-threaded processing
JP2013097671A (ja) 2011-11-02 2013-05-20 Fujitsu Ltd アドレス変換装置、アドレス変換装置の制御方法及び演算処理装置
US8930674B2 (en) 2012-03-07 2015-01-06 Soft Machines, Inc. Systems and methods for accessing a unified translation lookaside buffer
US9256550B2 (en) 2012-03-28 2016-02-09 International Business Machines Corporation Hybrid address translation
US9092359B2 (en) 2012-06-14 2015-07-28 International Business Machines Corporation Identification and consolidation of page table entries
US10310973B2 (en) * 2012-10-25 2019-06-04 Nvidia Corporation Efficient memory virtualization in multi-threaded processing units
US10216642B2 (en) 2013-03-15 2019-02-26 International Business Machines Corporation Hardware-based pre-page walk virtual address transformation where the virtual address is shifted by current page size and a minimum page size
CN104516710A (zh) * 2013-09-26 2015-04-15 快捷半导体(苏州)有限公司 一种异步缓存方法、异步缓存器及集成电路

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050044319A1 (en) * 2003-08-19 2005-02-24 Sun Microsystems, Inc. Multi-core multi-thread processor
US20050050296A1 (en) * 2003-08-28 2005-03-03 Intel Corporation Method for page sharing in a processor with multiple threads and pre-validated caches
US20060136659A1 (en) * 2004-12-21 2006-06-22 Sanjeev Jain Processor having content addressable memory with command ordering
WO2007027671A2 (en) * 2005-08-29 2007-03-08 Searete Llc Scheduling mechanism of a hierarchical processor including multiple parallel clusters
US20070296729A1 (en) * 2006-06-21 2007-12-27 Yun Du Unified virtual addressed register file
US20090190404A1 (en) * 2008-01-25 2009-07-30 Roohparvar Frankie F Nand flash content addressable memory
CN102200930A (zh) * 2011-05-26 2011-09-28 华为数字技术有限公司 同步变量映射方法及装置、同步变量释放方法及同步变量删除方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210349805A1 (en) * 2019-05-02 2021-11-11 Microsoft Technology Licensing, Llc Coprocessor-based logging for time travel debugging
US11899562B2 (en) * 2019-05-02 2024-02-13 Microsoft Technology Licensing, Llc Coprocessor-based logging for time travel debugging

Also Published As

Publication number Publication date
CN109564543B (zh) 2020-09-15
WO2018034679A1 (en) 2018-02-22
CN112114934A (zh) 2020-12-22
US10146698B2 (en) 2018-12-04
KR102661483B1 (ko) 2024-04-26
JP2019525376A (ja) 2019-09-05
US9864700B1 (en) 2018-01-09
EP3500934A1 (en) 2019-06-26
US20180113814A1 (en) 2018-04-26
KR20190032585A (ko) 2019-03-27
JP6767569B2 (ja) 2020-10-14
EP3500934A4 (en) 2020-04-15

Similar Documents

Publication Publication Date Title
US9098284B2 (en) Method and apparatus for saving power by efficiently disabling ways for a set-associative cache
US8156309B2 (en) Translation look-aside buffer with variable page sizes
US9235514B2 (en) Predicting outcomes for memory requests in a cache memory
TWI545435B (zh) 於階層式快取處理器中之協調預取
US9886385B1 (en) Content-directed prefetch circuit with quality filtering
US10747683B2 (en) Translation lookaside buffer switch bank
TW201346591A (zh) 用於多上下文計算引擎的轉譯後備緩衝之技術
US20220091992A1 (en) Device, system and method to provide line level tagging of data at a processor cache
KR20180058797A (ko) 데이터 매칭을 통한 캐시 라인 중복제거를 위한 방법 및 장치
Imani et al. CAP: Configurable resistive associative processor for near-data computing
CN109564543A (zh) 用于多线程式模式中的功率降低的方法和装置
EP2562652B1 (en) System and method for locking data in a cache memory
JP2018514861A (ja) バースト変換ルックアサイドバッファ
KR20210037216A (ko) 이종 메모리를 이용하여 메모리 주소 변환 테이블을 관리하는 메모리 관리 유닛 및 이의 메모리 주소 관리 방법
WO2021008552A1 (zh) 数据读取方法和装置、计算机可读存储介质
US20210064539A1 (en) Unified address translation
US10649786B2 (en) Reduced stack usage in a multithreaded processor
US9165088B2 (en) Apparatus and method for multi-mode storage
US20220405209A1 (en) Multi-stage cache tag with first stage tag size reduction
US11500638B1 (en) Hardware compression and decompression engine
US20200183922A1 (en) Nearest neighbor search logic circuit with reduced latency and power consumption
US20220197794A1 (en) Dynamic shared cache partition for workload with large code footprint
Kumar Increasing TLB reach using TCAM cells

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