CN1717664B - 微处理器、高速缓存存储器子系统及计算机系统 - Google Patents

微处理器、高速缓存存储器子系统及计算机系统 Download PDF

Info

Publication number
CN1717664B
CN1717664B CN2003801043019A CN200380104301A CN1717664B CN 1717664 B CN1717664 B CN 1717664B CN 2003801043019 A CN2003801043019 A CN 2003801043019A CN 200380104301 A CN200380104301 A CN 200380104301A CN 1717664 B CN1717664 B CN 1717664B
Authority
CN
China
Prior art keywords
cache
storage
access
sub
piece
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.)
Expired - Fee Related
Application number
CN2003801043019A
Other languages
English (en)
Other versions
CN1717664A (zh
Inventor
M·阿尔叙
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
Publication of CN1717664A publication Critical patent/CN1717664A/zh
Application granted granted Critical
Publication of CN1717664B publication Critical patent/CN1717664B/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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
    • 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
    • G06F12/0851Cache with interleaved 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/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
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

微处理器(100)包含用于支持每周多次存取的第二级高速缓存存储器(200)。微处理器(100)包含连接到高速缓存存储器子系统的执行单元(124),此子系统包含连接到多个总线(240)的高速缓存存储器(200)。高速缓存存储器(200)包含多个可独立存取的存储块(220)。这些总线(240)连结每个存储块(220)以便传送多个高速缓存存取请求。响应多个高速缓存总线(240)中传送的多个高速缓存存取请求,同时存取不同的存储块(220)。

Description

微处理器、高速缓存存储器子系统及计算机系统
技术领域
本发明与微处理器领域有关,更具体而言,是指微处理器内部的高速缓存存储器管理。
背景技术
典型的计算机系统可包含一个或多个微处理器,而这些微处理器可连接一个或多个的系统存储器。这些微处理器可以运行代码并对存储在系统存储器内的数据作运算。注意文中所用的术语“处理器(processor)”与微处理器(microprocessor)同义。为了使指令和数据的提取和存储更便利,处理器通常采用某种形式的存储器系统。此外,为了加速系统存储器的存取动作,存储器系统可包含一个或多个高速缓存存储器。例如,有些微处理器可能具备有一级或多级的高速缓存存储器。在典型的微处理器中会使用第一级高速缓存(L1cache)和第二级高速缓存(L2cache),而某些新的处理器也可能使用第三级高速缓存(L3cache)。许多旧型的处理器会把第一级高速缓存建构在芯片内,而将第二级高速缓存建构在芯片外。但是,为了进一步改善存储器的存取时间,新的处理器会在芯片内建构第二级高速缓存。
一般而言,第二级高速缓存会比第一级高速缓存具有更大的容量但速度则较慢。此外,第二级高速缓存通常将指令高速缓存和数据整合成单一的高速缓存,而第一级高速缓存则可能实施为分开的指令高速缓存和数据高速缓存。第一级数据高速缓存用来保存由微处理器执行程序时最近读取或写入的数据。第一级指令高速缓存的作用类似第一级数据高速缓存,但它是保存最近执行的指令。必须注意的是,为方便起见将第一级指令高速缓存和第一级数据高速缓存简称为第一级高速缓存。第二级高速缓存则用来保存不适用于第一级高速缓存的指令和数据。第二级高速缓存可以是独有的(例如,它存储第一级高速缓存所没有的数据)或是包含的(例如,它存储第一级高速缓存的数据备份)。
存储器系统一般采用某种形式的高速缓存一致性机制(cachecoherence mechanism)以确保将正确数据提供给请求者。高速缓存一致性机制一般使用在单一请求内所传送数据的大小作为一致性的单位。此一致性的单位通常称为高速缓存线(cache line)。例如,有些处理器使用64字节的高速缓存线,而其它的处理器则使用32字节的高速缓存线。还有其它的处理器采用其它字节数的高速缓存线。如果第一级高速缓存和第二级高速缓存没有满足请求,那么即使是仅请求一个字(word),也将整个多字的高速缓存线从主存储器转移到第一级和第二级高速缓存。同样地,如果对一个字的请求在第一级高速缓存得不到,但却可在第二级高速缓存完全得到,则将整个包含所请求字的第二级高速缓存线从第二级高速缓存转移到第一级高速缓存。因此,小于各自高速缓存线的请求的数据单位可能导致整个高速缓存线在第二级级高速缓存和第一级高速缓存之间转移。这种转移动作通常需要许多个周期才能完成。
在读取或写入可高速缓存的存储器期间,首先检查第一级高速缓存是否可提供请求的信息(例如,指令或数据)。若可得到信息,即为命中,若无法得到信息即为未命中。若产生未命中,则检查第二级高速缓存。因此,当第一级高速缓存发生未命中,而在第二级高速缓存内命中时,这些信息将由第二级高速缓存转移到第一级高速缓存。如下所述,第二级高速缓存和第一级高速缓存之间的信息转移量通常是一个高速缓存线。此外,依据第一级高速缓存可使用的空间,可以从第一级高速缓存中清除一个高速缓存线以便为新的高速缓存线腾出空间,并可将清除的高速缓存线接着存储在第二级高速缓存。现代的处理器可通过执行多次的数据转移以便达到高速缓存数据转移的最佳化。某些传统的处理器,在这些高速缓存线“交换”的期间无法处理第一级高速缓存和第二级高速缓存的其它存取动作。
发明内容
本发明提出包含有用于支持每周期多次存取的第二级高速缓存存储器的微处理器的各种实施例。在一个实施例中,微处理器包含有连接高速缓存存储器子系统的执行单元,此子系统包含有连接到多个总线的高速缓存存储器。高速缓存存储器包含多个可独立存取的存储块(storage block)。这些总线被连接成可将多个高速缓存存取请求传送至各个存储块。响应在多个高速缓存总线中传送的多个高速缓存存取请求,可同时存取不同的存储块。
在一个实施例中,高速缓存存储器可包含多个可独立存取的标志单元(tag unit),这些标志单元被连接到多个存储块并建构成存储多个包含地址标志值的标志。响应所接收的多个高速缓存存取请求,将可同时存取不同的多个标志单元。
在另一个实施例中,多个存储块的每一个均包含多个可独立存取的存储子块。故可以同时存取任意两个与不同存储块相关联的子块,另外,可以在连续的周期依序存取任意两个与相同存储块相关联的子块。
附图说明
图1是显示微处理器的一个实施例的方块图;
图2是显示图1中微处理器的高速缓存子系统的一个实施例的方块图;
图3是显示图2中高速缓存子系统的一个存储块实施例的存取顺序图解;
图4是显示图1中微处理器的高速缓存子系统的另一个实施例的方块图;
图5是显示图2和图4的高速缓存子系统的一个实施例的操作时序图;
图6是显示图2和图4的高速缓存子系统的流水线操作时序图;
图7是显示包含有图1微处理器的计算机系统的一个实施例的方块图。
虽然本发明可以有各种不同的变型和替代的形式,其特定的实施例将经由图中的示例显示,同时在此做详细说明。然而,必须了解的是那些附图和详细说明并不是要将本发明的范围限制在所提出的特殊形式上,相反的,本发明将涵盖所有由所附权利请求为本发明定义的精神和目标内的所有变型、等效物和替代的形式。
100微处理器        101A指令高速缓存
101B数据高速缓存   102预先译码单元
103分支预测单元    104指令译码器
105提取译码控制    106指令控制单元
118程序调度装置    124执行单元
126加载存储单元    130第二级高速缓存
140总线接口单元    200高速缓存子系统
210标志阵列
210A、210B、210C、210N    标志单元
220主存储阵列
220A、220B、220C、220N    存储块
225高速缓存线      230高速缓存控制
231请求队列        240高速缓存总线
400高速缓存子系统  415CPU时钟
430高速缓存控制    451读取使能
455写入使能        700计算机系统
710系统存储器      715存储器总线
720输入/输出节点   725系统总线
730图形适配器      735图形总线
740外围设备        745外围设备总线
具体实施方式
现在参考图1,图中显示了微处理器100的实施例方块图。将微处理器100建构成用于执行存储在系统存储器(没有显示)中的指令。这些指令很多会对存储在系统存储器中的数据做运算。必须注意的是系统存储器实际上可能分布在整个计算机系统,且可以由一个或多个如微处理器100的微处理器存取。在一个实施例中,微处理器100是配备有x86系统结构的微处理器的示例,例如AthlonTM微处理器。然而,包含其它形式的微处理器的实施例也是可以考虑的。
在所列举的实施例中,微处理器100包含第一个第一级(L1)高速缓存和第二个第一级(L1)高速缓存:即一个指令高速缓存101A和一个数据高速缓存101B。依据其应用,第一级高速缓存可以是整合在一起的高速缓存或是分开的高速缓存。为方便起见,不论是哪种情形,在适当的地方,指令高速缓存101A和数据高速缓存101B将整体视为第一级高速缓存。微处理器100也包含有一个预先译码单元102(pre-decode unit)和分支预测逻辑103(branch prediction logic),其可和指令高速缓存101A接近地连接。微处理器100也包含连接到指令译码器104(instruction decoder)的提取与译码控制单元105(fetch anddecode control unit);此两者都连接到指令高速缓存101A。指令控制单元106(instruction control unit)连接到指令译码器104以便由此接收指令,再将运算发送到程序调度装置118(scheduler)。程序调度装置118连接到指令控制单元106并由此接收运算,再将运算发送到执行单元124(execution unit)。执行单元124包含加载/存储单元126(load/store unit),其被建构成用于执行对数据高速缓存101B的存取。由执行单元124所产生的结果可用作其后的指令的操作数值,和/或存储到寄存器文件(没有显示)。再者,微处理器100包含内建于芯片的第二级(L2)高速缓存130,其连接在指令高速缓存101A、数据高速缓存101B和系统存储器之间。
指令高速缓存101A可存储执行前的指令。与指令高速缓存106相关的功能有指令提取(读)、指令预先提取、指令预先译码和分支预测。指令码可以通过缓冲接口单元140(buffer interface unit)从系统存储器预先提取程序代码,或是如同接着要详细说明的方法,由第二级高速缓存130取得以提供至指令高速缓存101A。指令高速缓存101A可以用各种架构实现(例如,组相关(set-associative)、完全相关(fully-associative)或直接映射(direct-mapping))。在一个实施例中,将指令高速缓存101A建构成用于存储多个高速缓存线,其中在指令高速缓存101A的给定高速缓存线内的字节数目是由其应用决定的。再者,在另一个实施例中,指令高速缓存101A是由静态随机存取存储器(static random access memory,SRAM)实现,尽管如此,包含其它存储器形式的实施例也是可以考虑的。必须注意的是在一个实施例中,可以将控制电路(没有显示)包含在指令高速缓存101A内,用来控制高速缓存线的填写、取代和一致性。
指令译码器104建构成将指令译码为各种运算,这些运算是利用存储在芯片上常称为微指令只读存储器(microcode ROM,MROM)的只读存储器内的运算,以直接或间接译码的方式得到。指令译码器104可以将特定的指令译码成执行单元124内部可执行的运算。简单的指令可对应到单一运算。在某些实施例中,较复杂的指令可对应到多个运算。
指令控制单元106可以控制到执行单元124的运算的发送。在一个实施例中,指令控制单元106可以包含重新排序缓冲器(reorderbuffer),用来保留由指令译码器104接收到的运算。再者,指令控制单元106可建构成用于控制运算的退出。
在指令控制单元106的输出所提供的运算和立即数据可依指定路径传送到程序调度装置118。程序调度装置118可包含一个或多个程序调度装置单元(例如,整数程序调度单元和浮点程序调度单元)。值得注意的是在此所提的程序调度装置是一种这样的装置,其可以检测何时运算已经准备就序并将已就序的运算传送给一个或多个处理单元。例如,保留站(reservation station)就是一个程序调度装置。每一个程序调度装置118均能为等待传送到执行单元124的多个等待运算保留运算信息(例如,位编码的执行位和操作数值、操作数标志、和/或立即数据)。在某些实施例中,各程序调度装置118可能无法提供操作数值的存储。但各程序调度装置却可以监控在寄存器文件内已发送的运算和可获得的结果,以决定何时操作数值准备就绪,可由执行单元124读取。在某些实施例中,每一个程序调度装置118会对应于一个专用的执行单元124。而在其它的实施例中,单个程序调度装置118可以发送运算到一个以上的执行单元124。
在一个实施例中,执行单元124包含一个执行单元,例如,整数执行单元。然而在其它的实施例中,微处理器100可以是超标量(superscalar)处理器,在这种情况,执行单元124可能包含多个执行单元(例如,多个整数执行单元(没有显示)用于执行加法和减法等算术运算、移位、旋转、逻辑运算以及分支运算。此外,也可包含一个或更多的浮点运算单元(没有显示)以提供浮点运算。可构建一个或更多的执行单元以执行地址的产生,这些地址针对由加载/存储单元126执行的加载和存储存储器运算。
克构建加载/存储单元126以提供在执行单元124和数据高速缓存101B间的接口。在一个实施例中,加载/存储单元126可建构成载入/存储缓冲器(没有显示),该缓冲器具有多个存储位置可用于存储尚未执行的加载或存储动作所需要的数据和地址信息。加载/存储单元126也可针对稍早加载的指令和最近存入的指令执行相依性检查以确保数据的一致性得以持续。
数据高速缓存101B是用来存储在加载/存储单元126和系统存储器之间转移的数据的高速缓存存储器。类似上述的指令高速缓存101A,数据高速缓存101B可以各种特定的存储器架构实现,例如组相关架构。在一个实施例中,数据高速缓存101B和指令高速缓存101A是以不同的高速缓存单元实现。尽管如上述,仍可考虑替代的实施例,也就是将数据高速缓存101B和指令高速缓存101A整合成单一个单元。在一个实施例中,数据高速缓存101B可存储多个高速缓存线,在此,在数据高速缓存101B的给定高速缓存线内的字节数目是由应用决定。类似指令高速缓存101A,在一个实施例中,数据高速缓存101B是以静态随机存取存储器(SRAM)实现,尽管如此,在其它实施例中其它形式存储器是可以预期的。必须注意的是有一个实施例中可以将控制电路(没有显示)包含在数据高速缓存101B内,用来控制高速缓存线的填写、取代和一致性。
第二级高速缓存130也是一种高速缓存存储器,且可建构成用于存储指令和/或数据。在所显示的实施例中,第二级高速缓存130可以是内建于芯片的高速缓存而且可建构成完全相关、组相关或两者组合的形式。在一个实施例中,第二级高速缓存130可存储多个高速缓存线。必须注意的是第二级高速缓存130可包含有控制电路(没有显示在图1中),用来控制高速缓存线的填写、取代和一致性。
将在下文中参考图4进行更详细的说明,在一个实施例中,第二级高速缓存130的一部分(例如,第二级高速缓存130的主高速缓存存储阵列部分)可以非同步的方式存取,而第二级高速缓存130的另外一部分(例如,对应于主阵列的第二级高速缓存130标志阵列)可以同步和全流水线的方式存取。此外,将主存储阵列单元排列成多个可独立存取的存储块或存储单元,其可以和其它的存储块同时存取。
总线接口单元140可建构成在系统存储器和第二级高速缓存130之间以及在系统存储器、第一级指令高速缓存101A和第一级数据高速缓存101B之间转移指令和数据。在一个实施例中,总线接口单元140包含有缓冲器(没有显示),用于在执行写入周期数据流时缓冲写入处理。
参考图2,图中显示了图1的微处理器高速缓存子系统的实施例方块图。高速缓存子系统200包含有高速缓存存储器,此存储器包含有与标志阵列210连接的主存储阵列220。再者,高速缓存子系统200也包含有高速缓存控制230,其通过标示为高速缓存总线240的多个总线连接到标志阵列210。在一个实施例中,将主存储阵列220和标志阵列210应用在第二级高速缓存子系统,例如,图1中的第二级高速缓存130。然而,必须注意在其它的实施例中,主存储阵列220和标志阵列210也可应用在任何的高速缓存子系统中。
主存储阵列220包含有多个排列成可独立存取的存储块的存储单元。在所显示的实施例中,这些存储块被标示为220A-220N,其中N可以是任意的块数。在一个实施例中,这种存储块可以有八个,虽然,在其它的实施例中,其它的块数目也是可以预期的。此外,每一个存储块220A-N包含有四个可独立存取的子块,其标示为子块0-3。必须注意的是虽然每一个存储块220A-N包含有四个这类的子块,但在其它的实施例中,每一个存储块220A-N包含有其它的子块数目是可以预期的。
标志阵列210被建构成用于存储高速缓存线标志信息的存储阵列。在存储器请求期间,标志上的地址信息将用来决定是否有给定的数据片段出现在高速缓存中。例如,一存储器请求包含了所请求数据的地址。在标志阵列210内的比较逻辑(没有显示)会对请求的地址和存储在标志阵列210的标志单元210A-N内的每个标志内的地址信息作比较。如果请求地址和与给定标志相关的地址吻合,则显示如上所描述的命中。如果没有吻合的标志则显示未命中。将标志阵列210排列成多个标志单元,标示为210A-210N,其中N是任意的标志单元数。每个标志单元210A-N对应一个可独立存取的存储块,并且可包含多个标志组件。例如,在所显示的实施例中,标志单元210A对应于存储块220A。此外,在给定标志单元内的每个标志组件均对应于在给定存储块内的所有存储子块。存储在存储阵列220的数据片段的地址有一部分会存储在标志项中。地址的其它部分可以指定在存储阵列220内欲存取的位置(即子块)。高速缓存线可存储在给定的存储块内,所以高速缓存线可延伸到所有四个存储子块。例如:在所显示的实施例中,高速缓存线225的存储将遍及存储块220A的存储子块0-3,其中每个子块内存储一个子线(sub-line)。
高速缓存控制230包含有一个或多个请求队列231(queues)和控制逻辑(没有显示),其被建构成用于存储接收到的高速缓存请求并选择和排列这些将传送至高速缓存总线240的高速缓存请求。请求队列231可对应于接收到的高速缓存请求(如下所述)的来源和/或类型。在一个实施例中,当在图1中的第一级指令高速缓存101A或第一级数据高速缓存101B发生高速缓存未命中时,高速缓存控制230可以接收来自这些来源的请求。再者,高速缓存控制230也可接收来自总线接口单元140或来自另一个处理器(没有显示)以监听请求(snoop request)形式显示的请求。
一般而言,高速缓存请求出现的形式可以是读取请求、写入请求或更新请求。在所显示的实施例中,为了考虑这些请求,高速缓存总线240包含一个读取总线R、一个写入总线W和一个更新总线U。虽然如此,包含任意数目的各种总线的其它实施例是可以预期的。例如,额外的总线(如虚线所示)也可以使用在其它的实施例中。高速缓存控制230通过高速缓存总线240而连接至标志阵列210和主存储阵列220。读取总线R和写入总线W连接至主存储阵列220,而更新总线则仅连接到标志阵列210。在一个实施例中,R总线可包含有用于将地址和控制信息传送到标志阵列210和主存储阵列220以及传送来自主存储阵列220的数据的信号路径。W总线包含有用于将地址和控制信息传送到标志阵列210和主存储阵列220以及将数据传送到主存储阵列220的信号路径。U总线包含有将地址和控制信息传送到标志阵列210的信号路径。
在一个实施例中,更新高速缓存可修改给定的标志单元(如标志单元210)的标志组件内的信息。这些信息可包含有更改特定高速缓存线的状态。例如,在一个实施例中,存储器子系统可以利用修正的、自有的、专用的、共享的、无效的(MOESI)等一致性协议。在此种实施例中,请求者把新的高速缓存线状态写到标志阵列210而不需要变更存储在主存储阵列220相对应位置上的数据。当高速缓存线读取请求在标志阵列210内命中时,将使存储在主存储阵列220相对应位置上的数据经由读取总线R传送。同样地,当高速缓存线写入请求在标志阵列210内命中时,将使写入数据经由写入总线W传送并写入主存储阵列220。
如上所述,每一标志单元210A-N和每一存储块220A-N都是可独立存取的。此外,因为高速缓存总线240的R、W和U总线连接到各标志单元210A-N,且R和W总线连接到各存储块220A-N,其是根据高速缓存请求的形式(例如,读取、写入或更新)而决定,所以标志单元210A-N和存储块220A-N可以同时存取(例如,在相同的周期)。因此在所显示的实施例中,多达三种的对不同标志单元的独立存取请求可以同时服务。例如,对标志单元210B的读取请求可以和标志单元210A的写入请求同时服务,也可以和标志单元210C的更新请求同时服务。值得注意的是在一个实施例中,会有更多的总线连接到标志单元210和存储块220,故预期会有更多的请求可以同时服务。
可为每个标志单元210A-N指定一个唯一的地址值。这唯一的地址值对应于地址的一部分且可视为该地址的块位的一部分。当进入请求所包含的地址值的块位正好与给定标志单元的唯一指定值吻合时,这个请求就是针对该标志单元。在一个实施例中,每个标志单元210A-N都能监控高速缓存总线240的R、W和U总线。若在给定的周期有多个请求出现(如R、W和U)在高速缓存总线240的R、W和U总线且有两个或更多的请求是针对相同的标志单元时,该标志单元可在那个周期选择一个请求。该标志单元的其它请求在那个周期将被拒绝。然而,被拒绝的冲突请求可在接续的周期被选取。在一个实施例中,标志单元选择逻辑(没有显示)可依据更新请求具有最高优先权,其次为读取,再其次为写入的顺序选取请求。值得注意的是可以预期在其它的实施例中,若在给定的周期内有多个请求出现在高速缓存总线240的R、W和U总线且有两个或更多的请求是针对相同的标志单元时,可以使用不同的优先权选择读取、写入和更新请求。
如上所述,高速缓存控制230可包含有一个或更多的请求队列231用于存储即将输入的高速缓存请求。在一个实施例中,高速缓存控制230包含有建构成从请求队列231选择三种请求(如读取、写入和更新)的逻辑(没有显示),并在每个高速缓存存取周期期间,将所选择的请求传送到高速缓存总线240相对应的R、W和U总线上。高速缓存控制230可选择一个读取和一个写入请求而不需要检查它们是否在相同的标志单元造成冲突。在此种实施例中,如果请求造成冲突,标志单元会以上述方式选择和拒绝这些请求。在其它的实施例中,高速缓存控制230会根据所选择的读取请求的地址标志来选择写入请求,而使得给定标志单元的冲突不会发生。如果更新请求出现的话,可不需要检查标志单元的冲突而选择此请求。在其它的实施例中,如果有一对读取和写入请求没有冲突,则高速缓存控制230总是会选取此对读取和写入请求。例如,如果读取和写入请求都有块位,高速缓存控制230将在不同的周期传送这两个冲突的请求,因此可能传送没有冲突的请求。此外,可预期在一个实施例中,高速缓存控制230也可以在选择读取和写入请求之前确认给定的存储块或子块是否忙。
因此,依据对标志阵列210高速缓存存取的类型和数量,对不同存储块的多个存取动作可同时服务。再者,在下文中将参考图3进行更详细的说明,标志阵列210可以全流水线方式存取,所以对主存储阵列220的任一存储块、但对不同子块的多个存取动作均可在后续的周期依序服务。对主存储阵列220的忙碌子块的后续存取动作将会延迟,直到子块不再忙碌为止。
参考图3,图中显示了图2中高速缓存子系统的存储块实施例的存取顺序图解。为简单清晰起见,与图2所显示组件相对应的组件是以相同的编号显示。存储块220A连接至标志单元210A。图中所示的是对标志阵列输入请求序列的示例,此标志阵列可以是如图2所示的标志阵列210。输入请求可以是读取或写入动作,首先是地址A、接着是地址A+32、接着是地址A+16、紧接着是地址A+48。在此示例中,假设所有四个输入请求都命中标志单元210A。如存储块220A内所显示,对应于给定地址的各个数据片段被存储在不同的子块。存储块220A内的列是表示子块0-3,而行则显示存取给定数据片段的周期。
如上所述,图2的标志阵列210是全流水线。例如,如果多个请求命中给定标志单元的不同子块,则后续的每个请求均可以在前一个请求完成之前依序处理。可是,如果后续的存取是针对相同的子块,则对主存储阵列220的存取并不需要流水线处理。这是因为从存储单元(memory cell)或一组存储单元写入或读取数据时会有延迟。因此,任何给定的单元或单元组(如子块)的请求之后,且在该单元或单元组可再次存取之前将会伴随一个延迟。
对给定的输入请求序列而言,在周期0,将传回或写入对应于地址“A”的数据。在周期1,将传回或写入对应于地址“A+32”的数据。在周期2,将传回或写入对应于地址“A+16”的数据。在周期3,将传回或写入对应于地址“A+48”的数据。因此,因为对应于请求地址的数据存储在四个不同的子块,存取动作会在四个连续的周期响应而没有插入等待周期s。产生的输出序列显示了在地址之间没有等待周期。
如上所述,请求序列命中使数据存储在相同子块的标志单元时,则无法在其后的存取周期中达到没有插入等待周期的服务,因为子块的存取动作将伴随着时间延迟。
参考图4,图中显示了图1中微处理器的高速缓存子系统的另一个实施例。为简单清晰起见,与图1-图3所显示组件相对应的组件是以相同的编号标示。高速缓存子系统400包含由与标志阵列210相连接的主存储阵列220组成的高速缓存存储器。再者,高速缓存子系统400也包含有高速缓存控制430,其通过异步读取使能信号451和异步写入使能信号455连接至主存储阵列220。高速缓存控制430也通过多个高速缓存存取请求总线240连接至标志阵列210。高速缓存控制430和标志阵列210均接收由微处理器时钟树(clock tree)所分发的CPU的时钟信号415。在一个实施例中,在第二级高速缓存子系统中会使用主存储阵列220和标志阵列210,此第二级高速缓存子系统可以是如图1的第二级高速缓存130。然而,必须注意在其它的实施例中,主存储阵列220和标志阵列210可应用在任何的高速缓存子系统。
主存储阵列220包含有多个存储单元,可将其排列成可独立存取的存储块。在显示的实施例中,存储块标示为220A-220N,其中N可以是任意的块数。在一个实施例中,有八个此类的存储块,虽然如此,但在其它的实施例中,其它的块数目也是可以预期的。此外,每个存储块220A-N包含有四个可独立存取的子块,标示为子块0-3。值得注意的是虽然每个存储块220A-N包含有四个这类的子块,可以预期在其它的实施例中,每个存储块220A-N也包含有其它数目的子块。与一些使用CPU或系统时钟同步存取的高速缓存阵列相比较,在显示的实施例中,没有时钟分配网络(clock distribution network)与主存储阵列220相连接。主存储阵列220与标志单元210及微处理器100内的其它逻辑之间的存取为异步存取。在下文中将参考图5和图6进行更详细的说明,每个各自独立存取的存储子块0-3被建构成用于响应接收到确定的读取使能信号451而提供输出数据。此外,响应接收到确定的写入使能信号455,将数据写入给定的子块。因为没有与主存储阵列220相连接的时钟分配网络,所以在每一个周期中,不会存在与高速缓存阵列中未使用的存储单元的时钟相关的不必要的功率消耗。
标志阵列210是用于存储高速缓存线标志信息的存储阵列。将标志阵列210配置成多个标志单元,其标示为210A-N,其中N是任意的标志单元数。每个标志单元210A-N对应于一个存储块,且包含有多个标志或“标志组件”。例如,在显示的实施例中,标志单元210A对应于存储块220A。此外,给定标志单元内的每个标志组件可对应于给定存储块内的所有存储子块。因此,可将高速缓存线存储在给定的存储块内,使得高速缓存线可延伸到所有四个存储子块。例如,在所显示的实施例中,高速缓存线225存储遍及存储块220A的存储子块0-3。在所显示的实施例中,可通过CPU时钟415而同步地存取标志阵列210。
高速缓存控制430被建构成用于接收来自各种来源的高速缓存存取请求。在一个实施例中,高速缓存控制430和标志阵列210可以根据CPU时钟信号415而与微处理器其它部分同步地操作。因此,高速缓存控制430和标志阵列210可建构成用于接收CPU时钟信号415。
在所显示的实施例中,高速缓存控制430可建构成用于产生读取使能信号451和写入使能信号455,这些信号被传送至在主存储阵列220每个存储块内的每个存储子块0-3。
在一个实施例中,高速缓存控制430将建构成用于依据高速缓存命中或标志阵列210内的特定地址的高速缓存填入请求,而提供确定的读取使能信号451和确定的写入使能信号455。例如,给定的读取请求可能命中标志单元210A。标志单元210A会将命中指示(没有显示)提供给高速缓存控制430。高速缓存控制430可输出读取使能信号451。响应读取使能信号451和来自标志单元210A的地址信息,相对应的子块在给定延迟之后将输出请求的数据。同样地,如果收到对应于命中标志单元210A的写入请求时,标志单元210A会将指示(没有显示)提供给高速缓存控制430。高速缓存控制430输出写入使能信号455。响应于写入使能信号455和来自标志单元210A的地址信息,将在相对应的子块内写入数据。在一个实施例中,读取和写入使能信号的脉冲持续时间是预先决定的。
此外,高速缓存控制430是可编程的。可编程的特性允许各连续的读取使能信号451之间和各连续的写入使能信号455之间的脉冲重复时间是可变的。因此,对连续脉冲之间的时间进行编程的能力允许过程变动和重新使用具有不同高速缓存阵列大小的高速缓存控制电路。值得注意的是高速缓存控制430的各种编程设计方法是可以预期的。例如,在一个实施例中,使用的是可编程的寄存器。在另一个实施例中,各种脉冲延迟时间的选择可利用跳线在管芯上作硬件接线而实现。在制造期间,跳线连接可用激光蚀刻以提供必要的延迟。
值得注意的是,可预期在另一个实施例中其标志阵列210内的逻辑(没有显示)可产生读取使能信号451和写入使能信号455。
参考图5,图中显示了图2和图4的高速缓存子系统的一个实施例的操作时序图。此时序图包含有八个信号,从上到下依序为:CPU时钟、读取地址0A、读取使能脉冲0A、数据输出0A、数据输出锁存、写入地址1B、数据输入1B和写入使能脉冲1B。同时参考图1到图4,CPU时钟信号可以作为高速缓存子系统的参考时钟并以图4的CPU时钟415表示。如上所述,CPU时钟信号被分配到标志单元210,但可能不会如分配网络一样遍布主存储阵列220。
时序图显示了一种同时接收到读取和写入操作的实施例。如上所述,标志阵列210是以全流水线方式处理,而且主存储阵列220在对不同子块进行存取时也可以流水线方式处理。然而,若给定的标志单元同时收到多个针对相同子块的读取或写入请求时,高速缓存控制430可编程以在正确的时间输出读取和写入脉冲。此外,对主阵列220的不同存储块220A-N的存取请求可以被同时服务。在下个示例中,接收到针对存储块220A的相同子块0A内的地址的两个读取以及针对存储块220B的相同子块1B内的地址的两个写入。因此,读取和写入是对不同的标志单元。值得注意的是显示在图5中的特定时序作为说明之用,在其它的实施例中也可包含有其它的时序。
在时间记号t0,将地址0A1提供给主存储阵列220的存储块220A的子块0。在同一个CPU时钟脉冲的下降沿,读取使能脉冲R1持续确立一个时钟周期。响应此第一个读取使能脉冲,在存储块220A的子块0内的存储格单元在一些时间延迟之后输出数据D0A1。在此例中,当R1确立后,延迟时间为五个CPU时钟周期。同样地,在时间记号t1,可确立数据输出锁存信号以将数据D0A1锁存住。同时在时间记号t0,将地址1B 1和DI1中的数据提供给存储主存储阵列220的存储块220B的子块1。在同一个CPU时钟脉冲的下降沿,写入使能脉冲W1持续确立一个时钟周期。响应此第一个写入使能脉冲,将DI1内的数据写入存储块220B的子块1内的存储单元。
此外,在时间记号t1,将第二个地址(0A2)提供给主存储阵列220的存储块220A的子块0。在t1后的下一个CPU时钟的下降沿,第二个读取使能脉冲R2持续确立一个时钟周期。响应此第二个读取使能脉冲,在存储块220A的子块0内的存储单元在五个CPU时钟周期的延迟时间之后输出数据D0A2。在时间记号t2,可确立第二个数据输出锁存信号以将数据锁存住。
在时间记号t1,第二个写入地址(1B2)和DI2内的数据会提供给主存储阵列220的存储块220B的子块1。在t1后的下一个CPU时钟的下降沿,第二个写入使能脉冲W2持续确立一个时钟周期。响应此第二个写入使能脉冲,将DI2的数据写入在存储块220B的子块1内的存储单元。
如上所述,对相同子块的读取周期和写入周期会产生等待周期,但对不同存储块的存取周期可以同时或以连续的周期被服务。为适应这些等待周期,可以编程连续读取脉冲之间的延迟。例如,在上例中,高速缓存控制430可以被编程,以输出针对相同子块的读取使能脉冲和写入使能脉冲,使其不会比六个CPU时钟周期更快。注意在一个实施例中,地址和数据信号必须持续足够久以便有效的读取和写入数据。
参考图6的时序图,本图用于说明如图2和图4所示的高速缓存子系统的流水线操作。时序图包含十个信号,从上到下依序为:CPU时钟、子块0A地址、读取使能脉冲0A、数据输出0A、子块2B地址、读取使能脉冲2B、数据输出2B、子块3B地址、读取使能脉冲3B和数据输出3B。同时参考图1到图4,CPU时钟信号可以是高速缓存子系统的参考时钟且以图4的CPU时钟415表示。如上所述,将CPU时钟信号分配给标志单元210,但可能不会如分配网络一样遍布主存储阵列220。
时序图显示了对主存储阵列220的三个不同子块进行三个接续的(back-to-back)读取操作的示例。如上所述,标志阵列210可以是全流水线处理。例如,当一个或更多不同的标志单元接收到多个接续的读取或写入请求时,高速缓存子系统会在每一个连续时钟周期对不同的子块输出数据或写入数据,因此具有近乎流水线处理的动作。应当注意,当相同的标志单元和相同的子块在连续周期收到接续请求时,高速缓存子系统不会表现流水线处理的动作。在下一个示例中,接续地接收到对存储块220A的子块0A、存储块220B的子块2B和3B的地址的两个读取动作。请注意图6所示的特定时序仅用作说明之用,其它的实施例可能包含其它的时序。
在时间记号t0,将地址0A1提供给主存储阵列220的子块0A。在第一个CPU时钟脉冲的下降沿,使读取使能脉冲R0A1持续确立一个时钟周期。因为标志阵列流水线因载有额外的读取请求,所以在时间记号t1,将地址2B1提供到主存储阵列220的子块2B。在t1后的下一个CPU时钟下降沿,使读取使能脉冲R2B1持续确立一个时钟周期。此外,在时间记号t2,将地址2B1提供给主存储阵列220的子块2B,且在t2后的下一个CPU时钟下降沿,使读取使能脉冲R3B1持续确立一个时钟周期。因此,可对三个不同子块发出三个读取请求。
响应读取使能脉冲R0A1,存储子块0A在一些时间延迟后输出数据D0A1。在此例中,在R0A1确立后,延迟时间为五个CPU时钟周期。响应读取使能脉冲R2B1,存储子块2B在一些时间延迟后输出数据D2B1。在此例中,在R2B1确立之后,延迟时间为五个CPU时钟周期。在时间记号t4,将第二个地址提供给主存储阵列220的子块0A。在同一个CPU时钟脉冲的下降沿,使读取使能脉冲R0A2持续确立一个时钟周期。响应读取使能脉冲R3B1,存储子块3B在一些时间延迟后输出数据D3B1。在此例中,在R3B1确立后,延迟时间为五个CPU时钟周期。在时间记号t5,将第二个地址提供给主存储阵列220的子块2B。在同一个CPU时钟脉冲的下降沿,使读取使能脉冲R2B2持续确立一个时钟周期。在时间记号t6,将第二个地址提供给主存储阵列220的子块3B。在同一个CPU时钟脉冲的下降沿,使读取使能脉冲R3B2持续确立一个时钟周期。因此,在时间记号t4、t5和t6,可分别依序获得从最先的3个读取操作至三个独立的子块0A、2B和3B的数据。
响应读取使能脉冲R0A2,存储子块0A在一些时间延迟后输出数据D0A2。在此例中,在R0A2确立后,延迟时间为五个CPU时钟周期。响应读取使能脉冲R2B2,存储子块2B在一些时间延迟后输出数据D2B2。在此例中,在R2B2确立后,延迟时间为五个CPU时钟周期。响应读取使能脉冲R3B2,存储子块3B在一些时间延迟后输出数据D3B2。在此例中,在R3B2确立后,延迟时间为五个CPU时钟周期。因此,在时间记号t7、t8和t9,可分别依序获得从其次的3个读取操作到相同的三个独立的子块0A、2B和3B的数据。应注意从每一个子块输出的数据都会被锁存信号(没有显示)锁存住。
应注意虽然配合图5和图6分别对读取和写入操作进行了说明,但在此描述的操作也是可同时发生的。例如,对无冲突块的一连串读取和一连串写入操作可同时以流水线方式处理。
参考图7,图7是包含有图1所示微处理器的计算机系统的具体方块图。为简单清晰起见,与图1-图4所示组件相对应的组件被以相同的编号标示。计算机系统700包含微处理器100,其通过存储器总线715连接到系统存储器710。微处理器100更通过系统总线725连接到输入/输出节点720。输入/输出节点720通过图形总线735连接到图形适配器(graphics adapter)730。输入/输出节点720也通过外围设备总线连接到外围设备740。
在所显示的实施例中,微处理器100通过存储器总线715直接连接到系统存储器710。因此,微处理器包含存储器接口(没有显示在图7中)用于控制对系统存储器710的存取动作。然而,注意在其它的实施例中,系统存储器710也可经由输入/输出节点720连接到微处理器10。在此种实施例中,输入/输出节点720可包含存储器接口(没有显示)。再者,在一个实施例中,微处理器100可包含如图2所示高速缓存子系统200的高速缓存子系统。在其它的实施例中,微处理器100也可以包含有如图4所示高速缓存子系统400的高速缓存子系统。
系统存储器710可包含任何适合的存储装置。例如:在一个实施例中,系统存储器可包含一组或多组的动态随机存取存储器(DRAM)装置。虽然其它实施例也可以包含有其它存储装置和架构。
在所显示实施例中,输入/输出节点720被连接到图形总线735、外围设备总线740和系统总线725。因此,输入/输出节点720可包含各种总线接口逻辑(没有显示),这些总线接口逻辑包含缓冲器和控制逻辑用来管理不同总线之间的流量。在一个实施例中,系统总线725可以是与超传输技术(HyperTransport technology)兼容的以数据包为基础的互联系统。在这种实施例中,输入/输出节点720可建构成用于处理数据包传输。在另一个实施例中,系统总线725是典型的共享总线架构,如前端总线(front-side bus)。
再者,图形总线735可以和图形加速端口(accelerated graphic port;AGP)总线技术兼容。在一个实施例中,图形适配器730可以是各种图形设备,其建构成用于产生和显示作为显示用的图形影像。外围总线745可以是一般的外围设备总线,如外围元件接口总线(peripheralcomponent interconnect;PCI)。外围设备740可以是任何型式的外围设备,如调制解调器或声卡。
虽然已详细说明上述的各种实施例均,但本领域技术人员一旦完全体会上面所透露的信息,则为数众多的变型和修改对那些本领域技术人员而言是显而易见的。以下说明的权利要求应解读成涵盖所有的这类变型和修改。
产业利用性
本发明通常可适用于微处理器领域。

Claims (10)

1.一种微处理器,包含有:
执行单元(124),其被建构成对指令和数据作运算;
高速缓存存储器子系统,其连接到所述的执行单元;
其中所述的高速缓存存储器子系统包含:
高速缓存存储器,其包含多个独立存取的存储块(220A,220B...220N);
多个独立存取的标志单元(210A,210B…210N),其连接到所述的多个存储块,并被建构成用于存储多个标志,每个标志都包含一个地址标志值;和
多个高速缓存总线(240),其被连接成用于将多个高速缓存存取请求传送至所述多个存储块的每一个;
其中响应所述多个高速缓存存取请求被传送到所述多个高速缓存总线上,所述多个存储块中的不同存储块可被同时存取;
其中所述多个存储块关于所述多个标志单元被异步存取;
其中所述多个标志单元与所述微处理器的其它部分同步操作。
2.如权利要求1所述的微处理器,其中所述多个存储块的每一个均包含多个独立存取的存储子块,其中每一个所述存储子块被建构成响应接收到确定的异步读取使能信号而提供输出数据,且其中所述存储子块的一个给定的子块被建构成响应接收到确定的异步写入使能信号而存储数据。
3.如权利要求1所述的微处理器,其中响应接收到所述的多个高速缓存存取请求,所述多个标志单元中的不同标志单元可被同时存取。
4.如权利要求1所述的微处理器,其中所述的多个存储块的每一个均包含多个独立存取的存储子块,其中任两个与不同的所述存储块相关联的所述子块可被同时存取,且其中任两个与相同的存储块相关联的所述子块在连续的依序周期可被存取。
5.一种高速缓存存储器子系统,包含:
高速缓存存储器,其包含多个独立存取的存储块(220A,220B...220N);
多个独立存取的标志单元(210A,210B…210N),其连接到所述多个存储块,并被建构成用于存储多个标签,每个标志都包含一个标志值;和
多个高速缓存总线(240),其被连接成用于将多个高速缓存存取请求传送到所述多个存储块的每一个;
其中响应所述多个高速缓存存取请求被传送到所述多个高速缓存总线上,所述多个存储块中的不同存储块可被同时存取;
其中所述多个存储块关于所述多个标志单元被异步存取;
其中所述多个标志单元通过CPU时钟被同步存取。
6.如权利要求5所述的高速缓存存储器子系统,其中所述的多个存储块的每一个均包含多个独立存取的存储子块,其中任两个与不同的所述存储块相关联的所述子块可被同时存取,且其中任两个与相同的存储块相关联的所述子块在连续的依序周期可被存取。
7.一种计算机系统,包含有:
系统存储器,其建构成用于存储指令和数据;
微处理器,其通过存储器总线而连接至所述的系统存储器;
其中所述的微处理器包含:
执行单元(124),其被建构成对所述的指令和数据作运算;
高速缓存存储器子系统,其连接至所述的执行单元并被建构成用于存储由所述的执行单元所执行的所述指令和数据;
其中所述的高速缓存存储器子系统包含:
高速缓存存储器,其包含多个独立存取的存储块(220A,220B...220N);
多个独立存取的标志单元(210A,210B…210N),其连接到所述多个存储块,并被建构成用于存储多个标志,每个标志都包含一个标志值;和
多个高速缓存总线(240),其被连接用于将多个高速缓存存取请求传送至所述多个存储块的每一个;
其中响应所述多个高速缓存存取请求被传送到所述多个高速缓存总线上,所述多个存储块中的不同存储块可被同时存取;
其中所述多个存储块关于所述多个标志单元被异步存取;
其中所述多个标志单元与所述微处理器的其它部分同步操作。
8.如权利要求7所述的计算机系统,其中所述多个存储块的每一个均包含多个独立存取的存储子块,其中每一个所述存储子块被建构成响应接收到确定的异步读取使能信号而提供输出数据,且其中所述存储子块的一个给定的子块被建构成响应接收到确定的异步写入使能信号而存储数据。
9.如权利要求7所述的计算机系统,其中响应接收到所述的多个高速缓存存取请求,所述的多个标志单元中的不同标志单元可被同时存取。
10.如权利要求7所述的计算机系统,其中所述的多个存储块的每一个均包含多个独立存取的存储子块,其中任两个与不同的所述存储块相关联的所述子块可被同时存取,且其中任两个与相同的存储块相关联的所述子块在连续的依序周期可被存取。
CN2003801043019A 2002-11-26 2003-11-06 微处理器、高速缓存存储器子系统及计算机系统 Expired - Fee Related CN1717664B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/304,605 US7073026B2 (en) 2002-11-26 2002-11-26 Microprocessor including cache memory supporting multiple accesses per cycle
US10/304,605 2002-11-26
PCT/US2003/035280 WO2004049171A2 (en) 2002-11-26 2003-11-06 Microprocessor including cache memory supporting multiple accesses per cycle

Publications (2)

Publication Number Publication Date
CN1717664A CN1717664A (zh) 2006-01-04
CN1717664B true CN1717664B (zh) 2010-10-27

Family

ID=32325257

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2003801043019A Expired - Fee Related CN1717664B (zh) 2002-11-26 2003-11-06 微处理器、高速缓存存储器子系统及计算机系统

Country Status (8)

Country Link
US (1) US7073026B2 (zh)
EP (1) EP1565827B1 (zh)
JP (1) JP4425798B2 (zh)
KR (1) KR100955722B1 (zh)
CN (1) CN1717664B (zh)
AU (1) AU2003287522A1 (zh)
TW (1) TWI307476B (zh)
WO (1) WO2004049171A2 (zh)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004059491A1 (en) * 2002-12-30 2004-07-15 Intel Corporation Cache victim sector tag buffer
US7254681B2 (en) * 2003-02-13 2007-08-07 Intel Corporation Cache victim sector tag buffer
US7111127B2 (en) * 2003-07-14 2006-09-19 Broadcom Corporation System for supporting unlimited consecutive data stores into a cache memory
JP4046716B2 (ja) * 2004-10-06 2008-02-13 株式会社ソニー・コンピュータエンタテインメント 情報処理装置およびデータ伝送方法
US8347034B1 (en) 2005-01-13 2013-01-01 Marvell International Ltd. Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access
US7685372B1 (en) 2005-01-13 2010-03-23 Marvell International Ltd. Transparent level 2 cache controller
KR20070105779A (ko) * 2006-04-27 2007-10-31 엠텍비젼 주식회사 프로세스 기능을 갖는 메모리 장치 및 그 프로세스 방법
KR100782594B1 (ko) * 2006-07-14 2007-12-06 엠텍비젼 주식회사 데이터 처리 기능을 구비한 메모리 장치
US8909872B1 (en) 2006-10-31 2014-12-09 Hewlett-Packard Development Company, L. P. Computer system with coherent interconnection
CN101212488B (zh) * 2006-12-26 2011-08-24 梁国恩 双通道的网络储存管理装置与方法
JP4327863B2 (ja) * 2007-03-19 2009-09-09 株式会社東芝 映像蓄積装置とその制御方法
US20090006756A1 (en) * 2007-06-29 2009-01-01 Donley Greggory D Cache memory having configurable associativity
US8433880B2 (en) 2009-03-17 2013-04-30 Memoir Systems, Inc. System and method for storing data in a virtualized high speed memory system
US9442846B2 (en) * 2009-03-17 2016-09-13 Cisco Technology, Inc. High speed memory systems and methods for designing hierarchical memory systems
JP5482145B2 (ja) * 2009-11-25 2014-04-23 富士通株式会社 演算処理装置および演算処理装置の制御方法
WO2011075167A1 (en) * 2009-12-15 2011-06-23 Memoir Systems,Inc. System and method for reduced latency caching
US8843690B2 (en) 2011-07-11 2014-09-23 Avago Technologies General Ip (Singapore) Pte. Ltd. Memory conflicts learning capability
KR20140072276A (ko) * 2012-11-29 2014-06-13 삼성전자주식회사 불휘발성 메모리 및 불휘발성 메모리의 동작 방법
JP2015104045A (ja) * 2013-11-27 2015-06-04 株式会社日立製作所 通信装置、通信方法、および、記録媒体
US9753667B2 (en) * 2015-02-19 2017-09-05 Avago Technologies General Ip (Singapore) Pte. Ltd. High bandwidth memory and glitch-less differential XOR
US10073786B2 (en) 2015-05-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for compute enabled cache
KR101727407B1 (ko) * 2015-10-29 2017-04-14 주식회사 넥서스칩스 렌즈 왜곡 교정 장치 및 동작 방법
CN107526691B (zh) * 2016-06-21 2020-06-02 深圳市中兴微电子技术有限公司 一种缓存管理方法及装置
US10031834B2 (en) 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
US10915453B2 (en) 2016-12-29 2021-02-09 Intel Corporation Multi level system memory having different caching structures and memory controller that supports concurrent look-up into the different caching structures
TWI650640B (zh) * 2017-07-14 2019-02-11 瑞昱半導體股份有限公司 用於處理器的資料存取裝置與方法
US10642737B2 (en) * 2018-02-23 2020-05-05 Microsoft Technology Licensing, Llc Logging cache influxes by request to a higher-level cache
US11914518B1 (en) * 2022-09-21 2024-02-27 Arm Limited Apparatus and method for operating a cache storage

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998013763A2 (en) * 1996-09-25 1998-04-02 Philips Electronics N.V. Multiport cache memory with address conflict detection
US5752269A (en) * 1995-05-26 1998-05-12 National Semiconductor Corporation Pipelined microprocessor that pipelines memory requests to an external memory
US5878245A (en) * 1993-10-29 1999-03-02 Advanced Micro Devices, Inc. High performance load/store functional unit and data cache
US6427191B1 (en) * 1998-12-31 2002-07-30 Intel Corporation High performance fully dual-ported, pipelined cache design
US20020174299A1 (en) * 2001-05-18 2002-11-21 Broadcom Corporation Source controlled cache allocation

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1993013481A1 (en) * 1991-12-23 1993-07-08 Intel Corporation Interleaved cache for multiple accesses per clock in a microprocessor
EP0553743A1 (en) * 1992-01-31 1993-08-04 Motorola, Inc. A cache controller
EP0840231A1 (en) 1996-10-31 1998-05-06 Texas Instruments Incorporated Microprocessor comprising multi-level cache memory
US5924117A (en) 1996-12-16 1999-07-13 International Business Machines Corporation Multi-ported and interleaved cache memory supporting multiple simultaneous accesses thereto
US6237064B1 (en) 1998-02-23 2001-05-22 Intel Corporation Cache memory with reduced latency
US5999474A (en) * 1998-10-01 1999-12-07 Monolithic System Tech Inc Method and apparatus for complete hiding of the refresh of a semiconductor memory
WO2003088048A1 (en) * 2002-04-08 2003-10-23 University Of Texas System Non-uniform cache apparatus, systems, and methods

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5878245A (en) * 1993-10-29 1999-03-02 Advanced Micro Devices, Inc. High performance load/store functional unit and data cache
US5752269A (en) * 1995-05-26 1998-05-12 National Semiconductor Corporation Pipelined microprocessor that pipelines memory requests to an external memory
WO1998013763A2 (en) * 1996-09-25 1998-04-02 Philips Electronics N.V. Multiport cache memory with address conflict detection
US6427191B1 (en) * 1998-12-31 2002-07-30 Intel Corporation High performance fully dual-ported, pipelined cache design
US20020174299A1 (en) * 2001-05-18 2002-11-21 Broadcom Corporation Source controlled cache allocation

Also Published As

Publication number Publication date
CN1717664A (zh) 2006-01-04
TW200417913A (en) 2004-09-16
JP4425798B2 (ja) 2010-03-03
WO2004049171A3 (en) 2004-11-04
KR20050085150A (ko) 2005-08-29
KR100955722B1 (ko) 2010-05-03
EP1565827A2 (en) 2005-08-24
US7073026B2 (en) 2006-07-04
US20040103250A1 (en) 2004-05-27
TWI307476B (en) 2009-03-11
JP2006507602A (ja) 2006-03-02
AU2003287522A1 (en) 2004-06-18
WO2004049171A2 (en) 2004-06-10
EP1565827B1 (en) 2016-06-15

Similar Documents

Publication Publication Date Title
CN1717664B (zh) 微处理器、高速缓存存储器子系统及计算机系统
US8131935B2 (en) Virtual barrier synchronization cache
US6223258B1 (en) Method and apparatus for implementing non-temporal loads
US8244984B1 (en) System and method for cleaning dirty data in an intermediate cache using a data class dependent eviction policy
US6496902B1 (en) Vector and scalar data cache for a vector multiprocessor
US6643745B1 (en) Method and apparatus for prefetching data into cache
JP4699363B2 (ja) 動的プリフェッチ・バッファ構成および置換のための方法および装置
US9755994B2 (en) Mechanism for tracking age of common resource requests within a resource management subsystem
US7284102B2 (en) System and method of re-ordering store operations within a processor
JP2006517040A (ja) キャッシュラインサイズが異なる第一レベルキャッシュと第二レベルキャッシュを備えたマイクロプロセッサ
EP1278125A2 (en) Indexing and multiplexing of interleaved cache memory arrays
US20100257316A1 (en) Virtual Barrier Synchronization Cache Castout Election
KR101509628B1 (ko) 프로세서의 하이 어소시에이티브 캐시 메모리를 위한 scr 매커니즘
KR20080023335A (ko) 구성가능한 변환 색인 버퍼를 포함하는 마이크로프로세서
CN107038125B (zh) 具有加速预取请求的独立流水线的处理器高速缓存
US20130124802A1 (en) Class Dependent Clean and Dirty Policy
US8341358B1 (en) System and method for cleaning dirty data in a cache via frame buffer logic
US20140025891A1 (en) Relaxed coherency between different caches
EP0676690B1 (en) Delayed write of store instruction in processor device
JP2009252165A (ja) マルチプロセッサシステム
TWI235916B (en) Multilevel cache structure and method using multiple issue algorithm with over subscription avoidance for high bandwidth cache pipeline
US20050206648A1 (en) Pipeline and cache for processing data progressively
US6038642A (en) Method and system for assigning cache memory utilization within a symmetric multiprocessor data-processing system
CN118679457A (zh) 利用存储器中处理(pim)资源加速在主机上执行的非pim指令
EP0436305A2 (en) System and method for efficiently supporting access to I/O devices through large direct-mapped data caches

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20101027

Termination date: 20181106