CN112540937A - 一种缓存、数据访问方法和指令处理装置 - Google Patents

一种缓存、数据访问方法和指令处理装置 Download PDF

Info

Publication number
CN112540937A
CN112540937A CN201910901686.4A CN201910901686A CN112540937A CN 112540937 A CN112540937 A CN 112540937A CN 201910901686 A CN201910901686 A CN 201910901686A CN 112540937 A CN112540937 A CN 112540937A
Authority
CN
China
Prior art keywords
data
tag
index
array
sub
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910901686.4A
Other languages
English (en)
Inventor
项晓燕
陆一珉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou C Sky Microsystems Co Ltd
Original Assignee
Hangzhou C Sky Microsystems Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou C Sky Microsystems Co Ltd filed Critical Hangzhou C Sky Microsystems Co Ltd
Priority to CN201910901686.4A priority Critical patent/CN112540937A/zh
Publication of CN112540937A publication Critical patent/CN112540937A/zh
Pending 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
    • 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
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory

Landscapes

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

Abstract

本发明公开了一种缓存,包括数据阵列组和标签阵列组。数据阵列组包括复数个数据阵列,每个数据阵列包括预定数量的缓存数据行,每个缓存数据行具有对应的数据索引。标签阵列组包括复数个标签阵列,每个标签阵列与一个数据阵列相对应,且每个标签阵列包括复数个子标签阵列,每个子标签阵列包括预定数量的标签,每个标签具有对应的标签索引并包含与数据阵列中的缓存数据行相对应的物理地址。本发明还公开了包含该缓存的指令处理装置、片上系统和智能设备,以及对该缓存进行操作的数据访问方法。

Description

一种缓存、数据访问方法和指令处理装置
技术领域
本发明涉及处理器领域,尤其涉及具有数据缓存的处理器核心和处理器。
背景技术
现代的处理器或者处理器核心以流水线的方式来处理指令。典型的流水线通常包括取 指令、指令解码、指令发射、指令执行和指令退休等各个流水线阶段。
由于存储器的存取速度并未和处理器执行速度相匹配,目前在取指令和指令执行阶段, 对存储器进行操作的指令或者数据读取和写入操作成为了目前处理器性能的主要瓶颈之 一。考虑到不同存储介质的成本和存储速度,在现在的处理器架构中,通常采取分级存储 的机制,即采用低容量的高速缓存来缓存速度慢但成本也低的存储介质中的数据。利用缓 存机制,当从外部存储介质访问指令或者数据时,可以将所访问的数据或者指令存储到高 速缓存中,这样,当后续访问相同的指令或者数据时,可以直接从高速缓存来获取所访问 的数据或者指令而不用从外部存储介质来获取该数据或者指令。缓存机制可以显著提高数 据访问操作的执行速度。
对高速缓存进行管理以便提高对缓存的访问速度是本领域要解决的问题。特别是当高 速缓存的空间逐渐变大时,如何快速地访问高速缓存中的缓存数据是本领域要解决的问题 之一。
为此需要一种新的数据访问方案,可以高效地对高速缓存进行管理,并且可以快速地 对缓存数据进行访问。
发明内容
为此,本发明提供了一种新的缓存、指令处理装置、处理器和数据访问方法,以力图 解决或者至少缓解上面存在的至少一个问题。
根据本发明的一个方面,提供了一种缓存,包括数据阵列组和标签阵列组。数据阵列 组包括复数个数据阵列,每个数据阵列包括预定数量的缓存数据行,每个缓存数据行具有 对应的数据索引。标签阵列组包括复数个标签阵列,每个标签阵列与一个数据阵列相对应, 且每个标签阵列包括复数个子标签阵列,每个子标签阵列包括预定数量的标签,每个标签 具有对应的标签索引并包含与数据阵列中的缓存数据行相对应的物理地址。
根据本发明的另一个方面,提供了一种指令处理装置,包括上述缓存以及数据访问单 元。数据访问单元适于接收数据访问请求并进行处理以返回所请求的数据。该数据访问单 元包括地址生成单元、内存管理单元、物理标签比较器和数据输出单元。
地址生成单元适于基于数据访问请求来获取该请求要访问数据的虚拟地址,并基于所 获取的虚拟地址生成标签索引、数据索引和子标签索引。标签索引基于虚拟地址的第一部 分生成。数据索引基于虚拟地址的第二部分生成。子标签索引基于虚拟地址的第三部分生 成,且虚拟地址的第二部分至少包括虚拟地址的第一部分和第三部分。
内存管理单元耦接到地址产生单元,并适于获取与虚拟地址相对应的物理地址。
物理标签比较器耦接到内存管理单元和缓存中的标签阵列组,适于将内存管理单元所 获取的物理地址和在述标签阵列组中检索到的、与标签索引相对应的标签所包括的物理地 址进行比较,以确定具有相同物理地址的命中标签。
数据输出单元适于在命中标签所处的子标签阵列在标签阵列中的子阵列位置与子标 签索引相一致时,在根据数据索引而从缓存的数据阵列组中检索到的缓存数据行中,选择 来自与命中标签所处的标签阵列相对应的数据阵列的缓存数据行作为要输出的数据。
可选地,根据本发明的指令处理装置还包括回填缓冲器,适于在子阵列位置与子标签 索引不一致时,根据标签索引和子阵列位置计算新数据索引;在与所述命中标签所处的标 签阵列相对应的数据阵列中检索与新数据索引相对应的新缓存数据行;将命中标签写入到 命中标签所处的标签阵列中、与子标签索引相对应的子标签阵列中的标签索引所指示的位 置处;以及将新缓存数据行写入到相同数据阵列中的数据索引所指示的位置处。
可选地,在根据本发明的指令处理装置中,回填缓冲器检索到新缓存数据行之后,选 择新缓存数据行发送给数据输出单元,以便由数据输出单元选择新缓存数据行作为要输出 的数据。
可选地,在根据本发明的指令处理装置中,在回填缓冲器将新缓存数据行写入到数据 索引所指示的位置处之后,数据输出单元从数据索引所指示的位置处读取新缓存数据行作 为要访问的数据。
可选地,在根据本发明的指令处理装置中,回填缓冲器还适于在物理标签比较器确定 不存在命中标签时,从耦接到指令处理装置的存储器中获取在物理地址处的数据行,以便 将所获取的数据行发送给数据输出单元作为要访问的数据;基于物理地址创建标签,并将 所创建的标签写入到标签阵列当中、与子标签索引相对应的子标签阵列中的标签索引所指 示的位置处;以及将所获取的数据行写入到与标签阵列相对应的数据阵列中、数据索引所 指示的位置处。
可选地,在根据本发明的指令处理装置中,地址产生单元还适于基于所获取的虚拟地 址生成数据偏移,该数据偏移基于虚拟地址的第四部分生成;以及数据输出单元还适于选 择缓存数据行中、由数据偏移所指示位置处的数据作为要访问的数据。
可选地,在根据本发明的指令处理装置中,虚拟地址的第四部分包括从虚拟地址的最 低位开始的多个位,第四部分所包含的位数与数据行的长度相对应;虚拟地址的第一部分 包括根据地址位从低到高的顺序紧邻第四部分的多个位;虚拟地址的第三部分包括根据地 址位从低到高的顺序紧邻第一部分的一个或者多个位,第三部分所包含的位数与第二数量 相对应;以及虚拟地址的第二部分包括所述第一部分和第三部分。
可选地,在根据本发明的指令处理装置中所述,标签还包括缓存数据行的状态信息。
根据本发明的还有一个方面,提供了一种数据访问方法,适于在包括上述缓存的指令 处理设备中执行,该方法包括步骤:基于数据访问请求来获取该请求要访问数据的虚拟地 址;基于所获取的虚拟地址生成标签索引、数据索引和子标签索引,标签索引基于虚拟地 址的第一部分生成,数据索引基于虚拟地址的第二部分生成,子标签索引基于虚拟地址的 第三部分生成,且虚拟地址的第二部分至少包括虚拟地址的第一部分和第三部分;在所缓 存的数据阵列组中检索与该数据索引相对应的缓存数据行;在所缓存的标签阵列组中检 索与该标签索引相对应的标签;获取与该虚拟地址相对应的物理地址,并将所获取的物理 地址和从每个子标签阵列中检索到的标签中包含的物理地址进行比较以确定具有相同物 理地址的命中标签;以及当命中标签所处的子标签阵列在标签阵列中的子阵列位置与子标 签索引相一致时,从所检索到的缓存数据行中,选择来自与命中标签所处的标签阵列相对 应的数据阵列的缓存数据行作为要访问的数据。
根据本发明的另一个方面,提供了一种片上系统,包括根据本发明的指令处理装置或 者处理器。
根据本发明的还有另一个方面,提供了一种智能设备,包括根据本发明的片上系统。
根据本发明的方案,利用标签阵列和数据阵列、以VIPT(虚拟索引物理标签)的方式来对数据缓存进行管理,通过将标签阵列的分组粒度设置的小于数据阵列的分组的粒度, 当不同的虚拟地址被映射到相同的物理地址时,也可以在标签阵列中找到该物理地址,并 且将所缓存的、在该物理地址处的数据转移到最新的虚拟地址所索引的位置处,从而解决 了由于不同的虚拟地址映射到同一个物理地址而可能导致的数据别名问题。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这 些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落 入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其 它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件 或元素。
图1示出了根据本发明一个实施例的指令处理装置的示意图;
图2示出了根据本发明一个实施例的数据访问单元和缓存的示意图;
图3示出了根据本发明一个实施例的数据访问方法的流程示意图;
图4示出了根据本发明一个实施例的标签阵列访问的实现逻辑示意图;
图5示出了根据本发明另一个实施例的数据阵列访问的实现逻辑示意图;以及
图6A示出了根据本发明实施例的指令处理流水线的示意图;
图6B示出了根据本发明实施例的处理器核架构的示意图;
图7示出了根据本发明一个实施例的处理器的示意图;
图8示出了根据本发明一个实施例的计算机系统的示意图;以及
图9示出了根据本发明的一个实施例的片上系统(SoC)的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示 例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限 制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完 整的传达给本领域的技术人员。
图1是根据本发明一个实施例的指令处理装置100的示意图。在一些实施例中,指令 处理装置100可以是处理器、多核处理器的处理器核、或者电子系统中的处理元件。
如图1所示,指令处理装置100包括取指令单元130。取指令单元130可以从高速缓存110、存储器120或其他源获取要处理的指令,并发送给解码单元140。取指令单元130 所取出的指令包括但不限于高级机器指令或者宏指令等。处理装置100通过执行这些指令 来完成特定功能。
解码单元140接收从取指令单元130传入的指令,并且解码这些指令以生成低级微操作、微代码进入点、微指令或其他低级指令或控制信号。它们反映了所接收的指令或者从所接收的指令导出。低级指令或控制信号可通过低级(例如,电路级或硬件级)操作来实现高级指令的操作。可使用各种不同的机制来实现解码单元140。合适机制的示例包括但不限于,微代码、查找表、硬件实现、可编程逻辑阵列(PLA)。本发明不受限于实现解码 单元140的各种机制,任何可以实现解码单元140的机制都在本发明的保护范围之内。
随后,这些经解码的指令被发送到执行单元150,并由执行单元150执行。执行单元150包括可操作用于执行指令的电路。执行单元150在执行这些指令时,从寄存器组170、 高速缓存110和/或存储器120接收数据输入并向它们生成数据输出。
在一个实施例中,寄存器组170包括架构寄存器,架构寄存器也被称为寄存器。除非另外予以规定或清楚明显可知,在本文中,短语架构寄存器、寄存器组、以及寄存器用 于表示对软件和/或编程器可见(例如,软件可见的)和/或由宏指令指定来标识操作数的寄存器。这些寄存器不同于给定微架构中的其他非架构式寄存器(例如,临时寄存器、重排序缓冲器、引退寄存器等)。根据一个实施例,寄存器组170可以包括一组矢量寄存器175,其 中的每个矢量寄存器175可以是512位、256位、或128位宽,或者可以使用不同的向量 宽度。可选地,寄存器组170还可以包括一组通用寄存器176。通用寄存器176可以在执 行单元执行指令时使用,例如存储跳转条件、存储指令运算结果、存储要访问数据的地址, 存储从高速缓存110和/或存储器120读取的数据等。
执行单元150可以包括多个具体的指令执行单元150a、150b…150c等,这些指令执行单元诸如例如算术单元、算术逻辑单元(ALU)、整数单元、浮点单元、数据存取单元等, 并且可以分别执行不同类型的指令。例如,指令执行单元150a为数据存取单元,可以执行 与数据操作相关的指令。与数据操作相关的指令包括数据存储指令和数据加载指令。数据 存储指令用于向高速缓存110或存储器120写入数据。而数据加载指令用于从高速缓存110 或存储器120读取数据。
取指令单元130和指令执行单元150a经由数据访问单元180来访问高速缓存110和/ 或存储器120。数据访问单元180管理对高速缓存110和存储器120的数据访问,并管理在高速缓存110中缓存的数据。例如当取指令单元130和指令执行单元150a第一次访问 存储器120中的数据时,数据访问单元180从存储器120中获取数据,并在提供数据的同 时在高速缓存110中缓存所获取的数据,以便后续取指令单元130和指令执行单元150a再 次访问该数据时,直接从高速缓存110来提供该数据,从而显著提高数据访问的执行速度。
为了避免混淆描述,已示出和描述了相对简单的指令处理装置100。应当理解,指令 处理装置100可以具有不同的形式,例如指令处理装置或处理器的其他实施例可具有多个 核、逻辑处理器或执行引擎。
数据访问单元180接收到数据访问请求时,需要高效且准确地确定所要访问的数据是 否在高速缓存110中缓存。因此,数据访问单元180提供了一种数据访问机制,来高效且 准确地管理在高速缓存110中缓存的数据。
图2示出了根据本发明一个实施例的数据访问单元180的示意图。应当注意的是,在图2中,根据要在数据访问单元180中实现的数据访问方式而对数据访问单元180中的 各个部件进行了逻辑划分,这些逻辑划分方式是示意性的,并且可以根据实际的物理布局 和业务需要而进行重新划分,甚至数据访问单元180本身也可以重新划分为多个部件,例 如用于处理取指令单元130的指令访问请求的数据访问单元和用于处理指令执行单元150a的数据访问请求的数据访问单元。所以这些都没有脱离本发明的保护范围。图3是对在数据访问单元180中执行的数据访问方法的描述。图3所示方法可以由图2所示的各个部件 来完成。当图2所示的部件进行重新组合和划分时,可以根据新部件所承载的逻辑而完成 相应的方法步骤,且没有脱离本发明的保护范围。
如图2所示,数据访问单元180包括地址生成单元210。地址生成单元210接收数据访问请求,并获取该数据访问请求所要访问数据的虚拟地址。对于指令处理装置100而言,其在处理程序任务时,会围绕要执行的任务构造指令空间和数据空间,并采用虚拟地址来引用这些空间中的内容,为此,数据访问单元180要确定数据访问请求要访问的虚拟地址。存在有多种方式来确定虚拟地址。根据一种实施方式,对于来自取值令单元130的取指令请求而言,由于取指令请求中包括要获取的指令相对于程序计数器(PC)的距离,因此, 可以根据该距离计算要获取指令相对于PC的相对偏移量,并加上PC的虚拟地址,从而 计算得到虚拟地址。根据另一种实施方式,对于来自指令执行单元150a的数据访问请求 而言,由于此时的数据访问请求源自数据加载指令或者数据存储指令,因此,可以根据指 令规范,从指令中(例如,指定的寄存器或者立即数)获取偏移量,并根据指令的基址(例 如,存储在另一个专门的寄存器中)和所获取的偏移量来计算得到虚拟地址。本发明不受 限于虚拟地址的获取方式,所有可以从数据访问请求中获取虚拟的方式都在本发明的保护 范围之内。
在获取了虚拟地址之后,地址生成单元210根据虚拟地址来生成虚拟索引,以便利用 虚拟索引从高速缓存110中获取缓存的数据。为此,在高速缓存110中维护标签阵列组112 和数据阵列组114。数据阵列组114包括多个数据阵列(也称为多路数据阵列)118。每个数据阵列118包括预定数量的缓存数据。根据一种实施方式,在数据阵列118中,以包括 多位数据的数据行为单位对缓存数据进行管理,即可以将数据阵列118中缓存的数据分为 多个数据行。每个数据行由一个数据索引进行索引,并且每个数据行包括固定位数的数据。这样,每个数据阵列所包含的缓存数据数量取决于数据索引的长度和数据行的长度。例如,当每个数据行包含512位(64字节)数据,且数据索引为8位(可以最多对256个数据行 进行检索)时,每个数据阵列118可以管理16K字节的缓存数据。
标签阵列组112同样包括多个标签阵列(也称为多路标签阵列)116。标签阵列和数据阵列118一一对应,而且每路标签阵列116还进一步包括多个子标签阵列117。每个子 标签阵列117包括预定数量的标签。标签数量取决于用于对子标签阵列117进行索引的标 签索引的长度。例如当标签索引为6位时,则子标签阵列117可以包括64个标签。每个 标签由对应的标签索引来检索,并至少包含与数据阵列组114中的缓存数据行相对应的物 理地址。另外标签还可以包含缓存数据行的其它特征,例如该缓存数据行的状态信息(包 括缓存行的有效位、脏位或共享位等状态信息)。
地址生成单元210根据虚拟地址来生成数据索引,以便利用所生成的数据索引来在数 据阵列118检索缓存的缓存数据行。地址生成单元210还根据虚拟地址来生成标签索引和 子标签索引。标签索引用于对各个标签阵列116中的子标签阵列117进行检索,而子标签 索引用于确定命中在标签阵列116中的哪个子标签阵列117。
根据一种实施方式,可以选择虚拟地址中的一部分来生成这些索引。可以根据高速缓 存110要缓存数据的大小、标签阵列和数据阵列的数量n、缓存数据行的大小来确定根据 虚拟地址的哪些部分来生成数据索引、标签索引和子标签索引。
例如,如果高速缓存110要缓存的数据为64KB(即64K字节),并将整个数据阵列 组114分为4路(n=4),即分为4个数据阵列118,而且数据行为64B(字节)。此时, 虚拟地址的最低6位(表示为[5:0],第一位从位置0开始)用于后续对缓存数据行中的数 据索引,虚拟地址从最低位开始的第7到第14位(表示为[13:6])这8位用作数据索引, 从而可以对256个缓存数据行、即16KB的数据进行索引。这样就可以满足将数据阵列组 114分为4路之后、对每路数据阵列进行索引的需要。
类似地,在上面的示例中,如果每个子标签阵列117为4KB的缓存数据提供标签,则每个子标签索引可以采用虚拟地址从最低位开始的第7到第12位(表示为[11:6])这6位,以便可以对64个标签(对应于64个缓存数据行,即4KB大小的数据)进行索引。 此时,标签阵列的数量和数据阵列的数量一样(n=4),每个标签阵列中所包含的子标签 阵列的数量m=(高速缓存要缓存的数据大小64KB)/(n*4KB)=4,因此子标签索引也 需要2位,即从虚拟地址最低位开始的第13位到第14位(表示为[13:12])用作子标签索 引。
根据一种实施方式,考虑到标签阵列被进一步划分为多个子标签阵列,而且每个标签 为一个缓存数据行进行状态管理,因此,数据索引所采用的虚拟地址位数和标签索引和子 标签索引所占据的虚拟地址位数之和相对应。
内存管理单元220耦接到地址生成单元210,接收地址生成单元210所获取的虚拟地 址,并根据所获取的虚拟地址来确定与该虚拟地址相对应的物理地址。内存管理单元220 可以利用各种方式来确定与虚拟地址相对应的物理地址。根据一种实施方式,内存管理单 元220中维护内存查询页表,从而可以根据该页表来确定与虚拟地址相对应的物理地址。 根据另一种实施方式,内存管理单元220中还可以维护TLB(Translation LookasideBuffer, 地址转换后援缓冲器),在TLB中维护了虚拟地址和物理地址之间的对应关系。这样,当 内存管理单元220接收到虚拟地址时,可以从TLB中检索到对应的物理地址,并且输出 所检索到的物理地址。
根据一种实施方式,内存管理单元220所接收到的虚拟地址为基于虚拟地址一部分的 标签。如上所述,当虚拟地址为32位时,标签索引采用了虚拟地址的第7到12位,则可以将虚拟地址剩下的最高20位,即第13到32位(可以表示为[31:12])用作标签。TLB中 建立了标签和物理地址的对应关系,从而可以根据标签来获取相对应的物理地址。
在地址生成单元210生成了标签索引之后,利用该标签索引在标签阵列组112中进行 检索。如上所述,标签阵列组112包括n个标签阵列,并且每个标签阵列包括m个子标 签阵列。因此,利用标签索引可以在标签阵列组112中获得n*m个标签作为检索结果。
物理标签比较器230耦接到内存管理单元220和标签阵列组112,分别接收内存管理 单元220所获取的物理地址和在标签阵列组112中检索到的n*m个标签。标签中包含有物理地址,比较器130将从内存管理单元所获取的物理地址和n*m个标签中所包含的物理地址进行比较,以确定是否有标签包含相同的物理地址(在下文中,将具有相同物理地址的标签称为命中标签)。
此外,物理标签比较器230还接收来自地址生成单元210的子标签索引。当存在命中 标签时,在比较器230中确定命中标签所处得子标签阵列在标签阵列中的位置是否与子标 签索引一致。当二者一致时,即标签索引为原始索引,则比较器230输出命中结果给数据输出单元240。
数据输出单元240耦接到物理标签比较器230。当比较器230确定标签索引是原始索 引时,数据输出单元240从比较器230接收命中结果。根据一种实施方式,命中结果指示哪路标签阵列(或者说,哪路数据阵列)被命中。
在地址生成单元210生成了数据索引之后,利用该数据索引在数据阵列组114中进行 检索。如上所述,数据阵列组1142包括n个数据阵列。因此,利用数据索引可以在数据 阵列组114中获得n个缓存数据行作为检索结果。
数据输出单元240还耦接到数据阵列组114,并获取作为检索结果的n个数据缓存行。 随后数据输出单元240根据所接收的命中结果,选择n个数据缓存行之一,即来自命中的 数据阵列的数据缓存行,作为要输出的数据缓存行。
根据一个实施方式,数据输出单元240可以输出所命中的数据缓存行中的特定缓存数 据。为此,地址生成单元210还可以基于虚拟地址来生成数据偏移。如上所述,可以利用 虚拟地址的最低几位(位数与数据缓存行的行长度有关,当每个数据缓存行包含64B的数 据时,采用的位数例如为最低6位)生成数据偏移。数据输出单元240耦接到地址生成单元210,并接收所生成的数据偏移,并根据所接收的数据偏移对命中的数据缓存行进行检索,以选择在该数据偏移处的数据作为最终输出的缓存数据。
另外,当在物理标签比较器230中确定不存在命中标签,即没有一个检索到的标签具 有和来自内存管理单元220的物理地址相对应时,则可以指示回填缓冲器250从存储器120 获取相应的并缓存到高速缓存中。
回填缓冲器250根据物理地址,从存储器120中该物理地址所指示的位置读取数据, 并将所读取的数据发送给数据输出单元240,以便返回该数据。例如如上所述,当数据阵 列和标签阵列以数据行为单位进行缓存数据管理时,回填缓冲器240可以在该物理地址所 指示的位置处读取一整个数据行,将所读取的数据行发送给数据输出单元240,并根据数 据偏移选择最终输出的缓存数据。
另外,回填缓冲器250还在标签阵列组112和数据阵列组114中缓存所读取的数据行。 具体而言,回填缓冲器250基于物理地址创建标签内容,并将所创建的标签写入到所选择 的一路标签阵列116当中、与子标签索引相对应的子标签阵列117中。写入标签的位置与标签索引相对应,即在标签索引所指示的位置处写入标签索引。同时,回填缓冲器250将 所获取的数据行写入到与选定路标签阵列116相对应的一路数据阵列118中。写入数据行 的位置与数据索引相对应,即在数据索引所指定的位置处写入数据行以作为缓存数据行。
这样,当后续接收到对具有相同虚拟地址的数据访问请求时,标签比较器230可以确 定存在命中标签,并由数据输出单元240从高速缓存110中获取该数据。
另外,如果在物理标签比较器230中确定存在命中标签,但是命中标签所处得子标签 阵列在标签阵列中的位置与子标签索引不一致,则物理标签比较器230也可以指示回填缓 冲器250进行回填处理。在这种情况下,标签索引为不是原始索引的别名索引。如上所述, 当每个标签阵列所包括的子标签阵列的数量为4时,则可能存在一个标签索引,并还存在 三个别名索引。由于指令处理装置100需要对不同的程序进行处理而进行上下文环境切换, 因此,有可能会导致不同的虚拟地址被映射到相同的物理地址,从而导致可能存在别名索 引被命中的情况。
在标签命中但标签索引为别名索引时,回填缓冲器250确定要读取的数据已经在数据 阵列中缓存了,但是未被恰当的标签所指示,因此,回填缓冲器250需要更新标签并在数 据缓存中移动缓存数据,以便后续由恰当的标签来指示该缓存数据。具体而言,回填缓冲 器250确定与命中标签相对应的新数据索引,即根据标签索引和命中标签所在的子阵列位 置计算新的数据索引。如上所述,在虚拟地址中,数据索引所采用的部分包括标签索引和 子标签索引所采用的部分,为此,可以用命中标签所在的子阵列位置来替代子标签索引, 以便生成新的数据索引。随后,回填缓冲器250利用新的数据索引,在同一路数据阵列(即, 与命中路的标签阵列相对应)中检索相对应的新缓存数据行,并将所检索到的新缓存数据 行写入到同一路数据阵列中、由之前的数据索引所指示的位置处。另外,回填缓冲器250 将命中标签的内容写入到在同一个标签阵列中、由原始索引所指示的子标签阵列中的相应 位置处,即相同标签索引所指示的位置处。也就是说,将命中标签的内容从别名索引所指 示的子标签阵列移动到由原始索引所指示的子标签阵列的同一个位置处。根据一种实施方 式,还可以在进行标签移动时,根据缓存数据的状态变化修改相应的状态信息。
根据一种实施方式,回填缓冲器250可以在获取了恰当的缓存数据之后,就直接将获 取的数据行发送给数据输出单元240,以便在移动缓存数据行和标签的同时输出缓存数据。
根据另一种实施方式,回填缓冲器250可以在移动了缓存数据行和标签之后,指示数 据访问单元180重新处理数据访问请求,从而可以由数据输出单元240从恰当的数据阵列 获取缓存数据并输出。
利用图2所示的数据访问单元180,可以以标签阵列和数据阵列的方式对缓存数据进 行管理时,进一步细化标签阵列为多个子标签阵列,这样,即使由于不同的虚拟地址可以 映射到相同的物理地址而导致存在数据别名问题,也可以通过将缓存数据回填到正确的索 引位置而解决该问题。
图4和图5分别给出了根据本发明一个实施例的访问标签阵列组和数据阵列组的实现 逻辑示意图。如图4所示,假定在地址生成单元210中获取的虚拟地址为32位,其中从最低位算起的20位,即va[31:12]用作标签;第7到第12位,即va[11:6]用作标签索引, 而第13到14位,即va[13:12]用作子标签索引。利用标签va[31:12]在内存管理单元220 的TLB中进行检索,以获取相应的物理地址。同时,在标签阵列组112中,可以用标签 索引va[11:6]在4路标签阵列(第0到第3路标签阵列)中的4个子标签阵列(分别与 va[13:12]=00、va[13:12]=01、va[13:12]=10和va[13:12]=11相对应)中经常检索,以获得 4*4=16个检索结果。随后,在物理标记比较器230中,利用比较器将来自内存管理单元 220的物理地址分别和从标签阵列组112获得的16个标签的内容(即,标签中包含的物理 地址)进行比较,将比较结果作为输入输出到以子标签索引va[13:12]为选通控制的选通器 中,以便根据命中标签是否在子标签索引va[13:12]所指示的子标签阵列上,来输出命中结 果,即真命中指示。真命中具有4位长度,每位值分别对应于一路标签阵列。例如,当命 中标签在第1路中,并且子标签索引指示原始索引时,则真命中[1]位的值被置1,且其它 位被置0。
如图5所示,在地址生成单元210中,取虚拟地址的第7到第14位,即va[13:6]用作数据索引,并取虚拟地址的第1到第6位,即va[5:0]用作数据偏移。这样,在数据阵列组 114中,利用数据索引同时对4路数据阵列进行检索以获得4个检索结果。在数据输出单 元240中,根据来自物理标签比较器230的比较结果,即真命中[3:0],来选择一路数据阵 列的检索结果输出。如上所述,真命中具有4位长度,当选择某一路输出时,就将相应的 位置1,从而可以利用选通器选择相应一路数据阵列的检索结果。随后,利用来自地址生 成单元的数据偏移作为选通器的选通控制,从所选择的缓存数据行中进一步选择要输出的 缓存数据。
应当注意的是,上面以虚拟地址为32位为例描述了如何利用虚拟地址来访问标签阵 列组和数据阵列组的方式,但是本不发明不受限于此,本发明可以应用于其它长度的虚拟 地址,例如地址为64位、128位或者256位的系统中。
图3示出了根据本发明一个实施例的数据访问方法300的流程示意图。方法300适于 在图1所示的指令处理装置100,特别是图2所示的访问处理单元180中执行。方法300 始于步骤S310。
在步骤S310中,基于数据访问请求来获取该请求要访问数据的虚拟地址。如上所述, 数据访问请求一般来自取值令单元130的取指令请求和指令执行单元150a的、与数据存 取相关的指令。存在有多种方式来确定虚拟地址。根据一种实施方式,对于来自取值令单 元130的取指令请求,由于取指令请求中包括要获取的指令相对于程序计数器(PC)的距离计算得到虚拟地址。根据另一种实施方式,对于来自指令执行单元150a的数据访问 请求,可以根据指令规范,从指令中(例如,指定的寄存器或者立即数)获取偏移量,并 根据指令的基址(例如,存储在另一个专门的寄存器中)和所获取的偏移量来计算得到虚 拟地址。本发明不受限于虚拟地址的获取方式,所有可以从数据访问请求中获取虚拟的方 式都在本发明的保护范围之内。
随后,在步骤S320中,基于在步骤S310中获得的虚拟地址来生成标签索引、数据索引和子标签索引。上面在对地址生成单元210进行描述时,已经详细描述了如何生成标签索引、数据索引和子标签索引的具体过程,这里不再进行赘述。简而言之,标签索引、 数据索引和子标签索引都基于虚拟地址的一部分生成,甚至可以直接采用虚拟地址的一部分用作这些索引,并且考虑到标签阵列被进一步划分为子标签阵列,用作数据索引的虚拟地址部分会包括用作标签索引和子标签索引的部分。
在步骤S330中,利用在步骤S320获得的数据索引,在高速缓存110的数据阵列组114中检索与该数据索引相对应的缓存数据行。数据阵列组114包括多路数据阵列118(数量为n)。每路数据阵列118包括预定数量的缓存数据。根据一种实施方式,在数据阵列 118中,以数据行为单位对缓存数据进行管理,每个数据行由一个数据索引进行索引,并 且每个数据行包括固定位数的数据。这样,每个数据阵列所包含的缓存数据数量取决于数 据索引的长度和数据行的长度。例如,当每个数据行包含512位(64字节)数据,且数据 索引为8位(可以最多对256个数据行进行检索)时,每个数据阵列118可以管理16K字 节的缓存数据。在步骤S330中,可以检索得到n个缓存数据行作为检索结果。
与步骤S330同步地执行步骤S340,在步骤S340中,在高速缓存110的标签阵列 组112中检索与该标签索引相对应的标签。标签阵列组112同样包括多路标签阵列116(数 量为n)。标签阵列和数据阵列118一一对应,而且每路标签阵列116还进一步包括多个 子标签阵列117(数量为m)。每个子标签阵列117包括预定数量的标签。标签数量取决 于用于对子标签阵列117进行索引的标签索引的长度。每个标签由对应的标签索引来检索, 并至少包含与数据阵列组114中的缓存数据行相对应的物理地址。另外标签还可以包含缓 存数据行的其它特征,例如该缓存数据行的状态信息(包括缓存行的有效位、脏位或共享 位等状态信息)。在步骤S340中,可以检索得到n*m个标签作为检索结果。
与步骤S330和S340同步地执行步骤S350,在步骤S350中,获取与步骤S320 中的虚拟地址相对应的物理地址。步骤S350可以利用内存管理单元220,尤其是其中的 TLB来执行。TLB中维护了虚拟地址和物理地址之间的对应关系。这样,在步骤S350中, 可以从TLB中检索到与步骤S320获得的虚拟地址相对应的物理地址。根据一种实施方 式,在步骤S350中所处理虚拟地址为基于虚拟地址一部分的标签。如上所述,当虚拟地 址为32位时,标签索引采用了虚拟地址的第7到12位,则可以将虚拟地址剩下的最高20 位,即第13到32位(可以表示为[31:12])用作标签。TLB中建立了标签和物理地址的对 应关系,从而可以根据标签来获取相对应的物理地址。
随后,在步骤S360中,将在步骤S350所获取的物理地址和步骤S340获得的、作 为检索结果的n*m个标签中包含的物理地址进行比较,以确定是否有标签包含相同的物 理地址,即是否存在命中标签。
另外,在步骤S360中,当确定存在命中标签时,还进一步确定命中标签所处的子标签阵列在标签阵列中的位置是否与步骤S320所生成的子标签索引一致。即,确定与命中 标签相对应的标签索引是否为原始索引。
如果在步骤S360中确定存在命中标签,并且与命中标签相对应的标签索引为原始索 引,则在步骤S370中,从步骤S330所检索到的缓存数据行中,选择来自与命中标签所 处的标签阵列相对应的数据阵列的缓存数据行作为要访问的数据。
另外,可选地,考虑到需要输出的不是一整个缓存数据行。因此,在步骤S320中还进一步基于虚拟地址来确定数据偏移,例如可以根据虚拟地址的最低几位(当数据缓存行为512位时,可以用6位用作数据偏移)生成数据偏移。并且方法300还包括步骤S375, 其中根据步骤S320计算得到的数据偏移对从步骤S370选定的数据缓存行进行检索,以 选择在该偏移处的数据作为最终输出的缓存数据。
如果在步骤S360中确定存在命中标签,但是与命中标签相对应的标签索引不是原始 索引时,则方法300继续到步骤S380中。如上所述,当每个标签阵列所包括的子标签阵列的数量为4时,则可能存在一个标签索引,并还存在三个别名索引。在这种情况下,标 签索引为别名索引,要读取的数据已经在数据阵列中缓存了,但是未被恰当的标签所指示。因此,在步骤S380中,需要更新标签并在数据缓存中移动缓存数据,以便后续由恰当的 标签来指示该缓存数据。具体而言,确定与命中标签相对应的新数据索引,即根据标签索 引和命中标签所在的子阵列位置计算新的数据索引。随后,利用新的数据索引,在同一路 数据阵列(即,与命中路的标签阵列相对应)中检索相对应的新缓存数据行,并将所检索 到的新缓存数据行写入到同一路数据阵列中、由之前的数据索引所指示的位置处。另外, 将命中标签的内容写入到在同一个标签阵列中、由原始索引所指示的子标签阵列中的相应 位置处,即相同标签索引所指示的位置处。也就是说,将命中标签的内容从别名索引所指 示的子标签阵列移动到由原始索引所指示的子标签阵列的同一个位置处。根据一种实施方式,还可以在进行标签移动时,根据缓存数据的状态变化修改相应的状态信息。
随后,在步骤S385中,输出所获取的数据行,或者进一步由步骤S375来从该数据行中获取最终要输出的数据。在步骤S385中可以有多种方式来获取数据行。根据一种实 施方式,可以在获取了恰当的缓存数据之后,就直接输出获取的数据行。根据另一种实施 方式,可以在移动了缓存数据行和标签之后,重新执行从步骤S320开始的处理,从而可 以根据步骤S370的处理从恰当的数据阵列获取缓存数据并输出。
如果在步骤S360中确定不存在命中标签,则方法300继续到步骤S390。在步骤S390中,从耦接到指令处理装置199的存储器120中获取在步骤S350所确定物理地址 处的数据行,缓存该数据行并输出该数据行作为要访问的数据。为了将所读取的数据行缓 存到高速缓存110中,在步骤S390中,首先基于物理地址创建标签,并将所创建的标签 写入到标签阵列中、与步骤S320生成的子标签索引相对应的子标签阵列中的标签索引所 指示的位置处(即构成原始索引),随后将所获取的数据行写入到与标签阵列相对应的数 据阵列中、由步骤S320中生成的数据索引所指示的位置处。
可选地,在获得数据行之后,可以继续进行到步骤S375,以便根据数据偏移获取相应的缓存数据并输出。
利用参考图3描述的数据访问方法,可以在以标签阵列和数据阵列的方式对缓存数据 进行管理时,进一步细化标签阵列为多个子标签阵列。这样,即使由于不同的虚拟地址可 以映射到相同的物理地址而导致存在数据别名问题,也可以通过将缓存数据回填到正确的 索引位置而解决该问题。
如上所述,根据本发明的指令处理装置可以实现为处理器核,且指令处理方法可以在 处理器核中执行。处理器核可以不同的方式在不同的处理器中实现。例如,处理器核可以 实现为用于通用计算的通用有序核、用于通用计算的高性能通用无序核、以及用于图形和 /或科学(吞吐量)计算的专用核。而处理器可以实现为CPU(中央处理器)和/或协处理器, 其中CPU可以包括一个或多个通用有序核和/或一个或多个通用无序核,而协处理器可以 包括一个或多个专用核。这样的不同处理器的组合可以导致不同的计算机系统架构。在一 种计算机系统架构中,协处理器在与CPU分开的芯片上。在另一种计算机系统架构中,协处理器在与CPU相同的封装中但处于分开的管芯上。在还有一种计算机系统架构中,协处理器与CPU在相同管芯上(在该情况下,这样的协处理器有时被称为诸如集成图形和/或科学(吞吐量)逻辑等专用逻辑,或被称为专用核)。在还有一种称为片上系统的计算机系统架构中,可以将所描述的CPU(有时被称为应用核或应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上。后续将参考图6A-9来描述示例性的核架构、处理器和计算机 架构。
图6A为示出根据本发明实施例的指令处理流水线的示意图,其中流水线包括有序流 水线以及无序发布/执行流水线。图6B为示出根据本发明实施例的处理器核架构的示意图, 其中包括有序架构核以及与寄存器重命名相关的无序发布/执行架构核。在图6A和6B中, 用实线框示出了有序流水线和有序核,而在虚线框中的可选附加项示出了无序发布/执行流 水线和核。
如图6A所示,处理器流水线900包括取出级902、长度解码级904、解码级906、 分配级908、重命名级910、调度(也称为分派或发布)级912、寄存器读取/存储器读取级914、 执行级916、写回/存储器写入级918、异常处理级922和提交级924。
如图6B所示,处理器核900包括执行引擎单元950和耦合到执行引擎单元950的前端单元930。执行引擎单元950和前端单元930两者都耦合到存储器单元970。核990可 以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或 替代核类型。作为又一选项,核990可以是专用核,诸如例如网络或通信核、压缩引擎、 协处理器核、通用计算图形处理器单元(GPGPU)核、或图形核(GPU)等等。
前端单元930包括分支预测单元934、耦接到分预测单元934的指令高速缓存单元932、耦接到指令高速缓存单元936的指令转换后备缓冲器(TLB)938、耦接到指令转换后 备缓冲器940的指令取出单元938、和耦接到指令取出单元938的解码单元940。解码单 元(或解码器)940可解码指令,并生成从原始指令解码出的、或以其他方式反映原始指 令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其 他控制信号作为输出。解码单元940可使用各种不同的机制来实现,包括但不限于查找表、 硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核990 包括存储(例如,在解码单元940中或否则在前端单元930内的)某些宏指令的微代码的微 代码ROM或其他介质。解码单元940耦接到至执行引擎单元950中的重命名/分配器单元 952。
执行引擎单元950包括重命名/分配器单元952。重命名/分配器单元952耦接到引退 单元954和一个或多个调度器单元956。调度器单元956表示任何数目的不同调度器,包括预留站、中央指令窗等。调度器单元956耦接到各个物理寄存器组单元958。每个物理 寄存器组单元958表示一个或多个物理寄存器组。不同的物理寄存器组存储一种或多种不 同的数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、 状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器 组单元958包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元 可以提供架构向量寄存器、向量掩码寄存器、和通用寄存器。物理寄存器组单元958被引 退单元954覆盖以示出可以用来实现寄存器重命名和无序执行的各种方式(例如,使用重新 排序缓冲器和引退寄存器组;使用将来的文件、历史缓冲器和引退寄存器组;使用寄存器 图和寄存器池等等)。引退单元954和物理寄存器组单元958耦接到执行群集960。执行群 集960包括一个或多个执行单元962和一个或多个存储器访问单元964。执行单元962可 以执行各种操作(例如,移位、加法、减法、乘法),以及对各种类型的数据(例如,标量浮 点、打包整数、打包浮点、向量整型、向量浮点)执行操作。尽管某些实施例可以包括专用 于特定功能或功能集合的多个执行单元,但其他实施例可包括全部执行所有功能的仅一个 执行单元或多个执行单元。在一些实施例中,由于会为某些类型的数据/操作创建单独的流 水线(例如,标量整型流水线、标量浮点/打包整型/打包浮点/向量整型/向量浮点流水线,和 /或各自具有其自己的调度器单元、物理寄存器组单元和/或执行群集的存储器访问流水线), 所以调度器单元956、物理寄存器组单元958和执行群集960可能有多个。还应当理解, 在使用单独的流水线的情况下,这些流水线中的一个或多个可以是无序发布/执行,并且其 余流水线可以是有序发布/执行。
存储器访问单元964耦接到存储器单元970,该存储器单元970包括数据TLB单元972、 耦接到数据TLB单元972的数据高速缓存单元974、以及耦接到数据高速缓存单元974的二级(L2)高速缓存单元976。在一个示例性实施例中,存储器访问单元964可包括加载 单元、存储地址单元和存储数据单元,其中的每一个均耦接到到存储器单元970中的数据 TLB单元972。指令高速缓存单元934还可以耦接到存储器单元970中的二级(L2)高速缓 存单元976。L2高速缓存单元976耦接到一个或多个其他级的高速缓存,并最终耦接到主 存储器。
作为示例,上面参考图6B描述的核架构可以如下方式来实现上面参考图6A描述的流水线900:1)指令取出单元938执行取出和长度解码级902和904;2)解码单元940执行 解码级906;3)重命名/分配器单元952执行分配级908和重命名级910;4)调度器单元956 执行调度级912;5)物理寄存器组单元958和存储器单元970执行寄存器读取/存储器读取 级914;执行群集960执行执行级916;6)存储器单元970和物理寄存器组单元958执行写 回/存储器写入级918;7)各单元可牵涉到异常处理级922;以及8)引退单元954和物理寄 存器组单元958执行提交级924。
核990可支持一个或多个指令集(例如,x86指令集(具有与较新版本一起添加的某些 扩展);MIPS技术公司的MIPS指令集;ARM控股的ARM指令集(具有诸如NEON等可 选附加扩展)),其中包括本文中描述的各指令。应当理解,核可支持多线程化(执行两个或 更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,此各种方式包 括时分多线程化、同步多线程化(其中单个物理核为物理核正同步多线程化的各线程中的每 一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后诸如用超线程化技术来 同步多线程化)。
图7示出了根据本发明一个实施例的处理器1100的示意图。如图7中的实线框所示, 根据一种实施方式,处理器1110包括单个核1102A、系统代理单元1110、总线控制器单元1116。如图7中的虚线框所示,根据本发明的另一个实施方式,处理器1100还可以包 括多个核1102A-N、处于系统代理单元1110中的集成存储器控制器单元1114以及专用逻 辑1108。
根据一种实施方式,处理器1100可以实现为中央处理器(CPU),其中专用逻辑1108是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),且核1102A-N是一个或多个通用核(例如,通用有序核、通用无序核、这两者的组合)。根据另一种实施方式,处理器1100可以实现为协处理器,其中核1102A-N是用于图形和/或科学(吞吐量)的多个专用核。根据还有一种实施方式,处理器1100可以实现为协处理器,其中核1102A-N是多个通用 有序核。因此,处理器1100可以是通用处理器、协处理器或专用处理器,诸如例如网络 或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众 核(MIC)协处理器(包括30个或更多核)、或嵌入式处理器等。该处理器可以被实现在一个 或多个芯片上。处理器1100可以是一个或多个衬底的一部分,和/或可以使用诸如例如 BiCMOS、CMOS或NMOS等的多个加工技术中的任何一个技术将其实现在一个或多个衬 底上。
存储器层次结构包括在各核内的一个或多个级别的高速缓存、一个或多个共享高速 缓存单元1106、以及耦接到集成存储器控制器单元1114的外部存储器(未示出)。该共享高 速缓存单元1106可以包括一个或多个中间级高速缓存,诸如二级(L2)、三级(L3)、四级(L4) 或其他级别的高速缓存、末级高速缓存(LLC)、和/或其组合。尽管在一个实施例中,基于 环的互连单元1112将集成图形逻辑1108、共享高速缓存单元1106以及系统代理单元1110/ 集成存储器控制器单元1114互连,本发明不受限于此,并且可使用任何数量的公知技术 来将这些单元互连。
系统代理1110包括协调和操作核1102A-N的那些组件。系统代理单元1110可包括例 如功率控制单元(PCU)和显示单元。PCU可以包括调整核1102A-N和集成图形逻辑1108的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1102A-N可以具有上面参考图1和6B描述的核架构,并且在架构指令集方面可以是同构的或异构的。即,这些核1102A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。
图8示出了根据本发明一个实施例的计算机系统1200的示意图。图8所示的计算机系统1200可以应用于膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务 器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、 视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其 他电子设备。本发明不受限于此,所有可以纳入本说明书中所公开的处理器和/或其它执行 逻辑的系统都在本发明的保护范围之内。
如图8所示,系统1200可以包括一个或多个处理器1210、1215。这些处理器耦接到控制器中枢1220。在一个实施例中,控制器中枢1220包括图形存储器控制器中枢 (GMCH)1290和输入/输出中枢(IOH)1250(其可以在分开的芯片上)。GMCH 1290包括与存 储器1240和协处理器1245相耦接的存储器控制器和图形控制器。IOH 1250将输入/输出 (I/O)设备1260耦接到GMCH 1290。作为选择,存储器控制器和图形控制器集成在处理器 中,这样存储器1240和协处理器1245就直接耦接到处理器1210,此时控制器中枢1220 仅仅包括IOH1250。
附加处理器1215的任选性质用虚线表示在图8中。每一处理器1210、1215可包括本文中描述的处理核中的一个或多个,并且可以是图7所示的处理器1100的某一版本。
存储器1240可以是例如动态随机访问存储器(DRAM)、相变存储器(PCM)或这两者的 组合。对于至少一个实施例,控制器中枢1220经由诸如前侧总线(FSB)之类的多分支总线 (multi-drop bus)、诸如快速通道互连(QPI)之类的点对点接口、或者类似的连接1295与处理 器1210、1215进行通信。
在一个实施例中,协处理器1245是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。在一个实施例 中,控制器中枢1220可以包括集成图形加速器。
在一个实施例中,处理器1210执行控制一般类型的数据处理操作的指令。嵌入在这 些指令中的可以是协处理器指令。处理器1210识别如具有应当由附连的协处理器1245执 行的类型的这些协处理器指令。因此,处理器1210在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1245。协处理器1245接受并执行所接收的协处理器指令。
图9示出了根据本发明的一个实施例的片上系统(SoC)1500的示意图。图9所示 的片上系统包含了图7所示的处理器1100,因此与图7中相似的部件具有同样的附图标 记。如图9所示,互连单元1502耦接到应用处理器1510、系统代理单元1110、总线控 制器单元1116、集成存储器控制器单元1114、一个或多个协处理器1520、静态随机存取 存储器(SRAM)单元1530、直接存储器存取(DMA)单元1532以及用于耦合至一个或多个 外部显示器的显示单元1540。应用处理器1510包括一个或多个核1102A-N的集合以及 共享高速缓存单元110。协处理器1520包括集成图形逻辑、图像处理器、音频处理器和 视频处理器。在一个实施例中,协处理器1520包括专用处理器,诸如例如网络或通信处 理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器等等。
根据本发明的片上系统(SoC)可以在各种智能设备中使用,以在智能设备中用于实 现相应的功能。这样的智能设备包括但不限于车载设备、智能音箱、智能显示设备、IoT设备、移动终端和个人数字终端等,所有可以纳入本说明中所公开的加速计算系统和/或其它执行逻辑的系统均在本发明的保护范围之内。
根据本发明的片上系统(SoC)或者加速计算系统可以在各种智能设备中使用,以在 智能设备中用于实现相应的功能,包括但不限于执行相关控制程序、进行数据分析、运算 和处理、网络通信、控制智能设备中的外设等。
这样的智能设备包括专门的智能设备,如移动终端和个人数字终端等,这些设备中包 括根据本发明的一个或者多个片上系统来进行数据处理,或者对设备中的外设进行控制。
这样的智能设备还包括为了实现特定功能而构造的专门设备,例如智能音箱、和智能 显示设备等。这些设备中包括根据本发明的片上系统来对音箱和显示设备进行控制,从而 赋予音箱和显示设备额外的通信、感知和数据处理等功能。
这样的智能设备还包括各种IoT和AIoT设备。这些设备中包括根据本发明的片上系统进行数据处理,例如进行AI运算、数据通信和传输等,从而实现了更加密集且更加 智能的设备分布。
这样的智能设备还可以在车辆中使用,例如可以实现为车载设备、或者可以嵌入到车 辆中,从而为车辆的智能驾驶提供数据处理能力。
这样的智能设备还可以用于家庭和娱乐领域,例如可以实现为智能音箱、智能空调、 智能冰箱、智能显示设备等。这些设备包括根据本发明的片上系统来进行数据处理和外设 控制,从而实现了家庭和娱乐设备的智能化。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。 本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包 括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输 入设备以及至少一个输出设备。
应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发 明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者 对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发 明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求 书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体 实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本 发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可 以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同 的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模 块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变 并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或 组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组 件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合 对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何 方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权 利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来 代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所 包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围 之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意 之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述 功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素 的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所 述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功 能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描 述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须 具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的 技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意, 本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限 定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于 本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对 本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。

Claims (25)

1.一种缓存,包括:
数据阵列组,所述数据阵列组包括复数个数据阵列,每个数据阵列包括预定数量的缓存数据行,每个缓存数据行具有对应的数据索引;以及
标签阵列组,所述标签阵列组包括复数个标签阵列,每个标签阵列与一个数据阵列相对应,且每个标签阵列包括复数个子标签阵列,每个子标签阵列包括预定数量的标签,每个标签具有对应的标签索引并包含与所述数据阵列中的缓存数据行相对应的物理地址。
2.如权利要求1所述的缓存,其中所述缓存适于由数据访问请求来访问,所述数据访问请求包含要访问数据的虚拟地址,并基于所述虚拟地址生成标签索引、数据索引和子标签索引,所述标签索引基于所述虚拟地址的第一部分生成,所述数据索引基于所述虚拟地址的第二部分生成,所述子标签索引基于所述虚拟地址的第三部分生成,且所述虚拟地址的第二部分至少包括所述虚拟地址的第一部分和第三部分;
所述数据阵列组适于利用所述数据索引进行检索,以检索相对应的缓存数据行;
所述标签阵列组适于利用所述标签索引进行检索,以便检索相对应的标签;
当与所述虚拟地址相对应的物理地址和所述从每个子标签阵列中检索到的标签中包含的物理地址相同时,所检索到的标签为命中标签;以及
当所述命中标签所处的子标签阵列在所述标签阵列中的子阵列位置与所述子标签索引相一致时,则从所检索到的缓存数据行中,选择来自与所述命中标签所处的标签阵列相对应的数据阵列的缓存数据行作为要访问的数据。
3.如权利要求2所述的缓存,其中:
当所述子阵列位置与所述子标签索引不一致时,根据所述标签索引和所述子阵列位置计算新数据索引;
在与所述命中标签所处的标签阵列相对应的数据阵列中检索与所述新数据索引相对应的新缓存数据行;
将所述命中标签写入到所述命中标签所处的标签阵列中、与所述子标签索引相对应的子标签阵列中的所述标签索引所指示的位置处;以及
将所述新缓存数据行写入到相同数据阵列中的所述数据索引所指示的位置处。
4.如权利要求3所述的缓存,其中在检索到所述新缓存数据行之后,选择所述新缓存数据行作为要访问的数据。
5.如权利要求3所述的缓存,其中在将所述新缓存数据行写入到所述数据索引所指示的位置处之后,从所述数据索引所指示的位置处读取所述新缓存数据行作为要访问的数据。
6.如权利要求2-5中任一个所述的缓存,其中当确定不存在所述命中标签时,从存储器中获取在所述物理地址处的数据行;
基于所述物理地址创建标签,并将所创建的标签写入到所述标签阵列中、与所述子标签索引相对应的子标签阵列中的所述标签索引所指示的位置处;以及
将所获取的数据行写入到与所述标签阵列相对应的数据阵列中、所述数据索引所指示的位置处。
7.如权利要求1-6中任一个所述的缓存,其中所述标签还包括所述缓存数据行的状态信息。
8.一种指令处理装置,包括如权利要求1-7中任一个所述的缓存以及数据访问单元,所述数据访问单元适于接收数据访问请求并进行处理以返回所请求的数据,所述数据访问单元包括:
地址生成单元,适于基于所述数据访问请求来获取所述请求要访问数据的虚拟地址,并基于所获取的虚拟地址生成标签索引、数据索引和子标签索引,所述标签索引基于所述虚拟地址的第一部分生成,所述数据索引基于所述虚拟地址的第二部分生成,所述子标签索引基于所述虚拟地址的第三部分生成,且所述虚拟地址的第二部分至少包括所述虚拟地址的第一部分和第三部分;
内存管理单元,耦接到所述地址产生单元,并适于获取所述虚拟地址相对应的物理地址;
物理标签比较器,耦接到所述内存管理单元和所述缓存中的标签阵列组,适于将所述内存管理单元所获取的物理地址和在所述标签阵列组中检索到的、与所述标签索引相对应的标签所包括的物理地址进行比较,以确定具有相同物理地址的命中标签;以及
数据输出单元,适于在所述命中标签所处的子标签阵列在所述标签阵列中的子阵列位置与所述子标签索引相一致时,在根据所述数据索引而从所述缓存的数据阵列组中检索到的缓存数据行中,选择来自与所述命中标签所处的标签阵列相对应的数据阵列的缓存数据行作为要输出的数据。
9.如权利要求8所述的指令处理装置,还包括:
回填缓冲器,适于在所述子阵列位置与所述子标签索引不一致时,根据所述标签索引和所述子阵列位置计算新数据索引;在与所述命中标签所处的标签阵列相对应的数据阵列中检索与所述新数据索引相对应的新缓存数据行;将所述命中标签写入到所述命中标签所处的标签阵列中、与所述子标签索引相对应的子标签阵列中的所述标签索引所指示的位置处;以及将所述新缓存数据行写入到相同数据阵列中的所述数据索引所指示的位置处。
10.如权利要求9所述的指令处理装置,其中所述回填缓冲器检索到所述新缓存数据行之后,选择所述新缓存数据行发送给所述数据输出单元,以便由所述数据输出单元选择所述新缓存数据行作为要输出的数据。
11.如权利要求9所述的指令处理装置,其中在所述回填缓冲器将所述新缓存数据行写入到所述数据索引所指示的位置处之后,所述数据输出单元从所述数据索引所指示的位置处读取所述新缓存数据行作为要访问的数据。
12.如权利要求9-11中任一个所述的指令处理装置,其中所述回填缓冲器还适于:
在所述物理标签比较器确定不存在所述命中标签时,从耦接到所述指令处理装置的存储器中获取在所述物理地址处的数据行,以便将所获取的数据行发送给所述数据输出单元作为要访问的数据;
基于所述物理地址创建标签,并将所创建的标签写入到标签阵列当中、与所述子标签索引相对应的子标签阵列中的所述标签索引所指示的位置处;以及
将所获取的数据行写入到与所述标签阵列相对应的数据阵列中、所述数据索引所指示的位置处。
13.如权利要求8-12中任一个所述的指令处理装置,其中所述地址产生单元还适于基于所获取的虚拟地址生成数据偏移,所述数据偏移基于所述虚拟地址的第四部分生成;以及
所述数据输出单元还适于选择所述缓存数据行中、由所述数据偏移所指示位置处的数据作为所述要访问的数据。
14.如权利要求13所述的指令处理装置,其中所述虚拟地址的第四部分包括从所述虚拟地址的最低位开始的多个位,所述第四部分所包含的位数与所述数据行的长度相对应;
所述虚拟地址的第一部分包括根据地址位从低到高的顺序紧邻所述第四部分的多个位;
所述虚拟地址的第三部分包括根据地址位从低到高的顺序紧邻所述第一部分的一个或者多个位,所述第三部分所包含的位数与所述第二数量相对应;以及
所述虚拟地址的第二部分包括所述第一部分和第三部分。
15.如权利要求8-14中任一个所述的指令处理装置,其中所述标签还包括所述缓存数据行的状态信息。
16.一种数据访问方法,适于在包括如权利要求1-7中任一个所述的缓存的指令处理装置中执行,所述方法包括步骤:
基于数据访问请求来获取所述请求要访问数据的虚拟地址;
基于所获取的虚拟地址生成标签索引、数据索引和子标签索引,所述标签索引基于所述虚拟地址的第一部分生成,所述数据索引基于所述虚拟地址的第二部分生成,所述子标签索引基于所述虚拟地址的第三部分生成,且所述虚拟地址的第二部分至少包括所述虚拟地址的第一部分和第三部分;
在所述缓存的数据阵列组中检索与所述数据索引相对应的缓存数据行;
在所述缓存的标签阵列组中检索与所述标签索引相对应的标签;
获取与所述虚拟地址相对应的物理地址,并将所获取的物理地址和所述从每个子标签阵列中检索到的标签中包含的物理地址进行比较以确定具有相同物理地址的命中标签;以及
当所述命中标签所处的子标签阵列在所述标签阵列中的子阵列位置与所述子标签索引相一致时,从所检索到的缓存数据行中,选择来自与所述命中标签所处的标签阵列相对应的数据阵列的缓存数据行作为要访问的数据。
17.如权利要求16所述的方法,还包括步骤:
当所述子阵列位置与所述子标签索引不一致时,根据所述标签索引和所述子阵列位置计算新数据索引;
在与所述命中标签所处的标签阵列相对应的数据阵列中检索与所述新数据索引相对应的新缓存数据行;
将所述命中标签写入到所述命中标签所处的标签阵列中、与所述子标签索引相对应的子标签阵列中的所述标签索引所指示的位置处;以及
将所述新缓存数据行写入到相同数据阵列中的所述数据索引所指示的位置处。
18.如权利要求17所述的方法,还包括步骤:
在检索到所述新缓存数据行之后,选择所述新缓存数据行作为要访问的数据。
19.如权利要求17所述的方法,还包括步骤:
在将所述新缓存数据行写入到所述数据索引所指示的位置处之后,从所述数据索引所指示的位置处读取所述新缓存数据行作为要访问的数据。
20.如权利要求16-19中任一个所述的方法,还包括步骤:
当确定不存在所述命中标签时,从耦接到所述指令处理装置的存储器中获取在所述物理地址处的数据行,并将所获取的数据行作为要访问的数据;
基于所述物理地址创建标签,并将所创建的标签写入到标签阵列中、与所述子标签索引相对应的子标签阵列中的所述标签索引所指示的位置处;以及
将所获取的数据行写入到与所述标签阵列相对应的数据阵列中、所述数据索引所指示的位置处。
21.如权利要求16-20中任一个所述的方法,还包括步骤:
基于所获取的虚拟地址生成数据偏移,所述数据偏移基于所述虚拟地址的第四部分生成;以及
所述选择缓存数据行作为要访问的数据包括:
选择所述缓存数据行中、由所述数据偏移所指示位置处的数据作为所述要访问的数据。
22.如权利要求21所述的方法,其中所述虚拟地址的第四部分包括从所述虚拟地址的最低位开始的多个位,所述第四部分所包含的位数与所述数据行的长度相对应;
所述虚拟地址的第一部分包括根据地址位从低到高的顺序紧邻所述第四部分的多个位;
所述虚拟地址的第三部分包括根据地址位从低到高的顺序紧邻所述第一部分的一个或者多个位,所述第三部分所包含的位数与所述第二数量相对应;以及
所述虚拟地址的第二部分包括所述第一部分和第三部分。
23.如权利要求16-22中任一个所述的方法,其中所述标签还包括所述缓存数据行的状态信息。
24.一种片上系统,包括如权利要求8-15中任一个所述的指令处理装置。
25.一种智能设备,包括如权利要求24所述的片上系统。
CN201910901686.4A 2019-09-23 2019-09-23 一种缓存、数据访问方法和指令处理装置 Pending CN112540937A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910901686.4A CN112540937A (zh) 2019-09-23 2019-09-23 一种缓存、数据访问方法和指令处理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910901686.4A CN112540937A (zh) 2019-09-23 2019-09-23 一种缓存、数据访问方法和指令处理装置

Publications (1)

Publication Number Publication Date
CN112540937A true CN112540937A (zh) 2021-03-23

Family

ID=75013239

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910901686.4A Pending CN112540937A (zh) 2019-09-23 2019-09-23 一种缓存、数据访问方法和指令处理装置

Country Status (1)

Country Link
CN (1) CN112540937A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116909946A (zh) * 2023-09-13 2023-10-20 北京开源芯片研究院 一种访存方法、装置、电子设备及可读存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116909946A (zh) * 2023-09-13 2023-10-20 北京开源芯片研究院 一种访存方法、装置、电子设备及可读存储介质
CN116909946B (zh) * 2023-09-13 2023-12-22 北京开源芯片研究院 一种访存方法、装置、电子设备及可读存储介质

Similar Documents

Publication Publication Date Title
CN108845826B (zh) 多寄存器存储器访问指令、处理器、方法和系统
US10678541B2 (en) Processors having fully-connected interconnects shared by vector conflict instructions and permute instructions
US20180095892A1 (en) Processors, methods, systems, and instructions to determine page group identifiers, and optionally page group metadata, associated with logical memory addresses
US10866902B2 (en) Memory aware reordered source
KR101787851B1 (ko) 다중 페이지 크기 변환 색인 버퍼(tlb)용 장치 및 방법
US20220091992A1 (en) Device, system and method to provide line level tagging of data at a processor cache
EP3550437A1 (en) Adaptive spatial access prefetcher apparatus and method
US11550731B2 (en) Processing method and apparatus for translation lookaside buffer flush instruction
US9183161B2 (en) Apparatus and method for page walk extension for enhanced security checks
CN111752615A (zh) 用于确保多线程处理器核的服务质量的装置、方法和系统
US20140089595A1 (en) Utility and lifetime based cache replacement policy
CN111767081A (zh) 用于加速存储处理的装置、方法和系统
CN111752863A (zh) 用于专用地址映射的系统、设备和方法
CN112148635A (zh) 具有可配置高速缓存子域和跨管芯存储器一致性的多处理器系统
US10761979B2 (en) Bit check processors, methods, systems, and instructions to check a bit with an indicated check bit value
CN110659220A (zh) 基于非统一存储器访问(numa)特性的增强数据预取的装置、方法和系统
CN110554887A (zh) 间接存储器提取器
US10013352B2 (en) Partner-aware virtual microsectoring for sectored cache architectures
CN112540937A (zh) 一种缓存、数据访问方法和指令处理装置
US20220197794A1 (en) Dynamic shared cache partition for workload with large code footprint
EP3757772A1 (en) System, apparatus and method for a hybrid reservation station for a processor
CN112559037B (zh) 一种指令执行方法、单元、装置及系统
CN112395000B (zh) 一种数据预加载方法和指令处理装置
CN114661358A (zh) 基于分支指令信息来访问分支目标缓冲器
US20220405209A1 (en) Multi-stage cache tag with first stage tag size reduction

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