CN101606130B - 在处理器***的指令级使能资源分配标识的方法和装置 - Google Patents
在处理器***的指令级使能资源分配标识的方法和装置 Download PDFInfo
- Publication number
- CN101606130B CN101606130B CN200880004207.9A CN200880004207A CN101606130B CN 101606130 B CN101606130 B CN 101606130B CN 200880004207 A CN200880004207 A CN 200880004207A CN 101606130 B CN101606130 B CN 101606130B
- Authority
- CN
- China
- Prior art keywords
- instruction
- resource allocation
- hardware cell
- access request
- flow line
- 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
Links
- 238000013468 resource allocation Methods 0.000 title claims abstract description 80
- 238000000034 method Methods 0.000 title claims description 52
- 238000003860 storage Methods 0.000 claims description 188
- 230000015654 memory Effects 0.000 claims description 119
- 238000013519 translation Methods 0.000 claims description 40
- 238000007726 management method Methods 0.000 claims description 29
- 238000005192 partition Methods 0.000 claims description 13
- 239000004065 semiconductor Substances 0.000 claims description 3
- 230000000977 initiatory effect Effects 0.000 abstract 2
- 238000012546 transfer Methods 0.000 description 19
- 230000008569 process Effects 0.000 description 17
- 102000001183 RAG-1 Human genes 0.000 description 10
- 108060006897 RAG1 Proteins 0.000 description 10
- 101001061851 Homo sapiens V(D)J recombination-activating protein 2 Proteins 0.000 description 9
- 102100029591 V(D)J recombination-activating protein 2 Human genes 0.000 description 9
- 230000004913 activation Effects 0.000 description 9
- 238000012360 testing method Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 6
- 101100442582 Neurospora crassa (strain ATCC 24698 / 74-OR23-1A / CBS 708.71 / DSM 1257 / FGSC 987) spe-1 gene Proteins 0.000 description 5
- 238000013475 authorization Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 101150013726 spe-8 gene Proteins 0.000 description 4
- 101100478118 Caenorhabditis elegans spe-4 gene Proteins 0.000 description 3
- 101100316805 Caenorhabditis elegans spe-5 gene Proteins 0.000 description 3
- 101100478119 Caenorhabditis elegans spe-6 gene Proteins 0.000 description 3
- 101100150045 Neurospora crassa (strain ATCC 24698 / 74-OR23-1A / CBS 708.71 / DSM 1257 / FGSC 987) spe-3 gene Proteins 0.000 description 3
- 239000003990 capacitor Substances 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 241000700605 Viruses Species 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 230000008672 reprogramming Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000009931 harmful effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000006993 memory improvement Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30079—Pipeline control instructions, e.g. multicycle NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
- Storage Device Security (AREA)
Abstract
一种信息管理***,包含具有多个硬件单元的处理器,所述多个硬件单元产生程序应用载入、存储、及I/O接口请求至信息管理***中的***总线。处理器包含资源分配标识符(RAID),其链接初始化***总线请求的处理器硬件单元至特定资源分配群组。资源分配群组给正初始化的处理器指派特定的带宽分配率。当载入、存储、或I/O接口总线请求到达I/O总线用于执行时,资源分配管理器通过给每个后继I/O请求器指派各个带宽量,来限制与每个I/O请求相关的带宽量。硬件单元中的指令流水线的后继阶段包含被链接至特定载入、存储、或I/O指令的资源分配标识符(RAID)。
Description
技术领域
本发明涉及一种信息管理(handling)***,且具体地,涉及在信息管理***中的共享资源的有效分配。
背景技术
信息管理***(IHS)可以包含处理器***,其使用多个处理器用于处理、管理、通信或操纵信息。多核处理器是描述具有多个处理器或多个被整合于共同集成电路上的核的处理器***的一个术语。IHS或处理器***可同时支持多个操作***。另外,可同时在处理器***中执行多个软件应用。例如,处理器***可在执行计算并发送图像数据到显示器的程序的同时,也执行病毒检测的程序应用。多处理环境是其中多个程序同时执行或运行的环境。多处理环境在传统处理器架构中是常见的。
作为在程序执行期间的正常过程,在处理器***中的典型软件应用消耗存储器地址及输入/输出(I/O)资源。处理器***执行使用存储器和/或I/O总线的载入与存储操作。处理器***依赖于总线资源的分配,作为有效资源管理的重要特点。存储器载入/存储请求,也称为读取/写入请求,需使用存储器总线用于数据移转。活跃的软件应用可向或从驻留于IHS中的***存储器初始化存储器数据移转请求。传统的处理器***可以包含用于存储器存取的多个请求器。另外,与其他程序同时运行的多于一个程序可能发出存储器载入/存储请求,因而初始化存储器载入/存储或信息移转操作。在处理器***内的多个处理器也可发出对共同的I/O总线的请求。因此,处理器***的各种功能元件必须竞争,并最终共享处理器***的资源。
处理器***典型地包含资源管理器,该资源管理器管理存储器总线的多个请求,并且分配每个资源的带宽的部分给每个资源请求器。处理器或处理器***内的处理器元件是资源请求器。资源请求与资源可用性之间的平衡给有效资源管理器的设计带来了主要挑战。处理器***也包含竞争请求器必须共享的共同I/O接口总线。具体地,处理器***在竞争的操作***、软件应用、以及处理器元件之间,共享共同I/O接口总线。资源管理器将带宽分配给竞争的I/O接口资源请求器。I/O接口总线与例如但不限于邻近处理器***、显示器、键盘、鼠标、媒介驱动器、及其他装置等的外部装置通信。
处理器***的传统软件架构层次可以包含管理程序(hypervisor),即控制(一个或多个)操作***存取处理器资源、存储器资源、及I/O资源的软件层。管理程序使得多个的软件应用和操作***在处理器***或IHS中执行而没有削弱冲突。管理程序控制资源管理器,并限制资源管理器对每个应用程序所允许的存储器量与I/O总线带宽,因而提供多个应用程序在处理器***内合作地有效共存的环境。资源管理器通过利用限制或禁止存储器和I/O总线的使用,来控制存储器带宽和I/O总线带宽。没有这种资源管理器,一个应用可能以无限制的方式消耗I/O资源,以致不允许另一应用得到足够的总线带宽以在合理的时间内完成应用的任务。不良的存储器总线或I/O总线资源管理可能产生不期望的情况,例如持续的重试或程序挂起。具体地,不良的总线资源管理可能导致处理器***无效率地消耗有限的总线带宽资源。
现在,如下处理器***是常见的,在该处理器***中,处理器或单一集成电路包含多个核或处理器元件,以及存储器和I/O控制器。这种处理器***有时称为多核处理器或芯片上***(SoC)。这种处理器***可以包含能够请求存取存储器及I/O资源的一个或多个硬件单元(HU)。HU可以包含一般的处理器核或(多个)核、特定的处理器核或(多个)核,以及可代表I/O装置来初始化请求的I/O控制器。在这种多核处理器中的资源管理器可将存储器和I/O带宽的部分分配给处理器***中的硬件单元的资源分配群组(RAG)。不幸的是,这种分配通常相对粗糙。例如,它无法解决运行于单一硬件单元上的多个操作***或应用之间的资源需求的区分(differing)。这种粗糙的资源分配可能导致在处理器***或IHS上的操作问题。例如,通过利用这种粗糙的资源分配,高带宽的应用、例如病毒扫描,可能有效地迫使例如图形用户界面之类的使用者互动应用无法执行。这可能引起用户体验的不良影响。
发明内容
根据第一方面提供一种由包含多个硬件单元的处理器存取共享资源的方法。该方法包含:由该处理器中的硬件单元接收指令,以执行对该共享资源的存取请求的需求。本方法还包括当该指令经过该硬件单元中的多个流水线(pipelined)阶段时,提供资源分配标识信息给该指令,该资源分配标识信息伴随着在该硬件单元中流水线阶段之间的指令。
在一实施例中,该流水线阶段之一是地址转译流水线阶段,其实施对该指令的有效向真实地址转译,在该地址转译流水线阶段,该资源分配标识信息关联该指令。在一实施例中,该流水线阶段之一是存储队列,在该地址转译流水线阶段的地址转译后,该存储队列接收该指令和相关的资源分配标识信息。
根据第二方面,提供和公开一种处理器,包含:位于半导体模上的多个硬件单元。该多个硬件单元被配置以存取共享资源。该多个硬件单元包含第一硬件单元。该第一硬件单元包含多个流水线阶段,其中该第一硬件单元接收指令,以执行对该共享资源的存取请求的需求。当该指令经过该第一硬件单元中的多个流水线阶段时,该第一硬件单元被配置以提供资源分配标识信息给该指令。
该共享资源优选地位于该多个硬件单元的外部。
在一实施例中,该流水线阶段之一是地址转译流水线阶段,其实施对该指令的有效向真实地址转译,在该地址转译流水线阶段,该资源分配标识信息关联该指令。在一实施例中,该流水线阶段之一是存储队列,在该地址转译流水线阶段的地址转译后,该存储队列接收该指令和相关的资源分配标识信息。在一实施例中,除了该第一硬件单元之外的其它多个硬件单元每个都包含多个流水线阶段,其中这种其它硬件单元接收指令,以执行对该共享资源的该存取请求的需求。当各个指令经过该其它硬件单元中的多个流水线阶段时,这种其它硬件单元提供资源分配标识信息给该各个指令。
附图说明
现在将通过仅示例以及参考以下附图来公开本发明的优选实施例:
图1是根据本发明的优选实施例的、处理器***的资源管理器的方块图。
图2是根据本发明的优选实施例的、图1的处理器***的资源分配图。
图3示出了根据本发明的优选实施例的、可用于图1的处理器***中的硬件单元的方块图。
图4是根据本发明的优选实施例的、可用于处理***中的所公开的硬件单元的方块图。
图5示出了根据本发明的优选实施例的、包含图4的硬件单元的所公开的处理器***的方块图。
图6是根据本发明的优选实施例的、图4所公开的硬件单元的示例ERAT查询表的图示。
图7是根据本发明的优选实施例的、图4所公开的硬件单元的示例FIFO存储队列的图示。
图8是描述根据本发明的优选实施例的、使用所公开的方法在处理器***中处理存储请求的流程图。
图9是根据本发明的优选实施例的、使用所公开的资源分配方法的资源管理***的方块图。
具体实施方式
在包含多个处理器单元的处理器***中,资源分配管理器(RAM)可通过将存储器和I/O带宽分配率分配到可能请求存储器或I/O存取的每个处理器单元,来管理在多个程序应用之间的资源带宽率。硬件单元(HU)术语对应于在处理器***中的可能发布存储器或I/O存取请求的每个处理器单元。在硬件单元中执行的***软件程序中的载入或存储指令可产生特定存储器或I/O请求。令牌(token)管理器是处理器***可使用的一种资源分配管理器(RAM)的例子。令牌管理器可以包含管理每个硬件单元(HU)的资源带宽分配率的一个或多个资源控制寄存器。RAM将硬件单元HU群组化为资源分配群组(RAG)。资源控制寄存器利用在令牌管理器内分配各个标识符,来标识处理器***中的每个特定RAG。令牌管理器通过令牌授权程序来授权正请求的硬件单元(HU)使用存储器和I/O接口总线。各令牌提供HU的总线带宽请求的分别控制,以控制存储器和I/O总线带宽的使用。令牌管理器与每个资源分配群组(RAG)相关联的总线带宽量被称作令牌率(token rate),即令牌管理器将令牌授权给在给定的RAG中的正请求的HU的比率。令牌管理器可通过将RAG的标识符与在令牌管理器的资源控制寄存器中的特定令牌率相关联,来分配特定带宽分配率给特定RAG。
管理程序可重新编程(reprogram)令牌管理器中的资源控制寄存器,以修改处理器***中的HU的每个RAG分配的令牌率或带宽分配率。在程序执行期间改变RAG分配的主要缺点是修改现有RAG的令牌率的时间量或***总线周期。正执行的程序应首先用完或“冲刷(flush)”所有目前等待的(outstanding)资源请求,即使使用现有资源分配设置的那些资源请求或指令。处理器***以“SYNC”命令来完成此指令冲刷。另外,程序应用应在新带宽分配率影响现有指令前,***SYNC命令指令。SYNC命令导致程序指令的现有流水线队列持续处理,直到流水线队列完成,或在SYNC命令后下一个指令前清空。所有的总线I/O操作应在新带宽率可能产生效果前完成。此基于SYNC命令的处理可能消耗不期望的大量的时间。
一旦完成SYNC命令处理,流水线队列中的下一个指令可修改RAM控制寄存器,并随后修改RAG带宽分配率。修改RAM的控制寄存器的处理也可能因为RAM与请求新RAG分配的HU之间的距离相对较大而消耗不期望的大量时间。一旦完成新的RAG分配,HU中的指令流水线队列可以继续用新的带宽分配率对后继指令进行处理。不幸的是,此缓慢的RAG分配改变处理可能导致与在带宽分配率更替期间执行的复杂***时钟周期有关的***延迟。由于这些原因,此RAG分配改变处理不是用于改变带宽分配率的期望的方法。
在RAG分配改变的另一个方法中,每个HU利用在各个HU中的资源分配标识符(RAID)寄存器来给特定RAG标识HU指派(assignment)。修改RAID指派以及特定HU的资源带宽分配率是比调整各指令间的资源带宽率更实用的方法。因为HU本地地维持RAID信息,所以处理器***使用较少的***总线周期时间来改变RAID,并因此将HU与具有潜在不同的带宽分配率的不同RAG相关联。此本地RAID存储方法比非本地RAID存储的方法更快。然而,在本地RAID存储方法中,处理器***仍然必须冲刷指令流水线队列,以允许新带宽分配率与需要新比率的下一个指令同步。因此,本地RAID存储方法仍在***资源时间方面花费甚大。
资源分配管理器(RAM)位于处理器***内的硬件单元(HU)的中心,管理HU对存储器存取与I/O接口存取的请求。另外,RAM通过控制HU的每个资源分配群组(RAG)的各个带宽分配率来管理总线的使用。虽然***软件可将***存储器存储分配给处理器***中的特定工作,但是存储器总线代表多个应用必须共享的资源。另外,RAM必须有效地管理存储器总线带宽,以提供存储器资源的有效使用。
图1是描述处理器***100中的集中化的资源管理的方块图。处理器***100包含多核处理器105,在其中整合了集中化的资源分配管理器RAM110。多核处理器的一个示例是细胞(cell)宽带引擎(CBE)处理器,如IBM公司、Sony以及Toshiba于2005年8月8日所发表的标题为“细胞宽带引擎架构、第1.0版”的文献所示,其公开被包含于此供参考。RAM 110耦接主(power)处理器元件PPE 115,其提供一般目的运算能力。在一个方法中,RAM 110是将存储器或I/O总线认可的令牌授权给正请求的HU的令牌管理器。每个令牌可代表总线带宽的特定分配率,例如128字节,或者,取决于特定应用的其他数值。
主处理器元件PPE 115能累积或储存来自RAM 110的令牌。具体地,PPE115可从RAM 110请求令牌,并储存或保持来自RAM 110的令牌。PPE 115可使用此令牌作为来自RAM 110的对未来存储器或I/O请求的授权。此特定处理器***100包含8个协同处理器元件,如图1所示的耦接RAM 100的SPE-1、SPE-2、SPE-3、SPE-4、SPE-5、SPE-6、SPE-7、以及SPE-8。此8个SPE中的每个SPE以及PPE 115都可单独地从RAM 110请求令牌。因此每个SPE与PPE是在此所定义的硬件单元(HU)。在此特定处理器***100中,SPE与PPE可代表四个资源分配群组(RAG)。RAM 110内的控制寄存器存储每个RAG的带宽分配率。
存储器控制器160耦接RAM 110,并管理与存储器总线165的接口。存储器总线165与随后描述的信息管理***(IHS)的***存储器(未图示)接口。***存储器可以包含相同存储器大小的8个存区(bank)。请求存储器载入或存储的HU(例如PPE或SPE)分别存取每个存储器存区。RAM 110对每个存区发布单独的令牌。在存取载入与存储期间,独立的存储器存区需要设置及还原时间。每个存储器存区都需要多个总线周期来完成任一载入或存储操作。RAM 110不因为任何存储器总线操作的长期迟延而对相同的存储器存区连续地发布重复的令牌。
I/O接口控制器170耦接RAM 110,并管理高速与低速接口总线的I/O接口。具体地,高速接口输入总线IOIF0-IN 175与高速接口输出总线IOIF0-OUT180将处理器105耦接于高速装置,例如另一个CBE或图形显示器。低速接口输入总线IOIF1-IN 185与低速接口输出总线IOIF1-OUT 190将处理器105耦接于较低速接口装置,例如键盘与紧致盘读/写驱动器。I/O总线是输入/输出接口总线175-190的简称。
硬件单元(HU)是处理器***100中的硬件元件、处理器元件、或功能单元,其通过产生载入或存储请求给处理器***100中的存储器地址或I/O,来直接请求存储器或I/O资源带宽的使用。RAM 110控制RAM 110分配给处理器***100中的硬件单元(HU)的任何资源分配群组(RAG)的存储器和I/O接口带宽量。如图1所示,处理器***100包含诸如PPE 115与SPE 1-8的HU。I/O接口控制器170作为在特定处理器***100架构中的第十个HU,因为接口控制器170能够以I/O装置的名义,请求直接存储器存取(DMA)。存储器控制器160与存储器总线165不可作为硬件单元HU,因为存储器控制器160与存储器总线165都无法直接地请求存储器或I/O总线的使用。此十个HU都是通过与RAM 110的操作与互动,来竞争CBE的存储器和I/O带宽的使用。
RAM 110将HU组织成相同带宽分配率的群组,即资源分配群组或RAG。RAM 110分配总I/O总线频率的给定百分比给每个RAG。RAM 110产生令牌,把其授权给给定的RAG。另外,RAM 110通过发布或授权令牌率来管理资源分配。每个令牌提供存储器总线与I/O接口总线资源分配的机制。在此示例中,每个令牌支持128个字节的存储器或I/O的带宽。当RAM 110发布授权给HU的令牌时,接着,此HU初始化已认可的I/O或存储器总线处理,直到令牌大小为128字节的I/O总线使用量,并管理此I/O或存储器总线处理,直到完成为止。
图2是描述图1的处理器***100的RAM 110可使用的一个资源分配图的图标。此图包含代表资源分配群组号或RAG号(RAG#)的列210。RAM 110根据图2所描述的资源分配图而运作。可以包含管理程序的***软件确定处理器***100的带宽分配率。另外,***软件用RAG带宽分配率来载入RAM110的资源控制寄存器195。RAM 110给此四个资源分配群组RAG(即如列210所示的RAG#0-3)中的每个群组管理特定存储器总线与I/O接口带宽分配率。RAM 110管理此特定硬件单元(HU)的I/O带宽分配率,并将分配率基于***软件指定给特定RAG的RAG号。请求存储器存取或接口I/O移转的软件指令使用如下资源分配率指派,其中RAG号在图2中列215的HU与列210的RAG号之间关联。
如上述,硬件单元(HU)是具有请求存储器存取或I/O接口移转能力的处理器***的硬件处理元件。在图1的示例以及图2的列215中,硬件单元(HU)是PPE、SPE-1、SPE-2、SPE-3、SPE-4、SPE-5、SPE-6、SPE-7、SPE-8、以及最后的I/O接口控制器170。***软件通过将特定RAID位分配给每个HU中的各个RAID寄存器,来将特定RAG数值关联指派给每个HU,如列210所示。另外,列210的RAG数值指派可以动态改变,允许处理器***100根据***软件的需要,见机改变I/O总线带宽的分配率指派。如图2的图所示,RAM 110分配等于0或RAG0的RAG号给硬件单元PPE 115与SPE-1。RAG0指派代表RAG0中硬件单元HU的特定带宽分配率。对于来自PPE 115与SPE-1的对存储器存取的未来请求或I/O接口请求的带宽分配率指派将对应于RAG0指派,直到***软件或更具体为管理程序修改此指派为止。在图2的示例中,RAM 110还指派SPE-2、SPE-3、SPE-4、及SPE-5给为1或RAG1的RAG号。RAM 110指派SPE-6与SPE-7给为2或RAG2的RAG号。RAM 110指派SPE-8给为3或RAG3的RAG号。I/O控制器170包含4个虚拟I/O通道(未图示),每个通道对应于特定RAG号,即RAG0-RAG3,如邻近I/O控制器170的列210所示的RAG号。另外,RAM 110将来自一I/O装置的每个I/O请求指派给给定的虚拟通道,由此将此I/O请求分配给对应的RAG。
在一个示例中,处理器***100还可以将存储器存区220分为8个单独的存区。每个单独的存储器存区代表唯一的存储器载入或存储操作。存储器存区存取或存储器数据移转需要对RAM 110的令牌请求以及RAM 110所授权的对应令牌。RAM 110管理存储器存区载入与存储操作的移转带宽。RAM110将每个存储器存区载入或存储请求与单一带宽率相关联。存储器控制器160管理处理器***100中的每个独立存储器存区I/O的载入与存储操作。
RAM 110令牌请求和令牌授权程序代表总总线带宽可用性的百分比。另外,带宽分配率是整体总线可用性(即100%)的百分比。在图2的示例中,带宽百分比被显示于存储器存区220的每列中。RAG0被图示以代表总存储器总线带宽的20%。RAG1代表总存储器总线带宽的30%。RAG2代表存储器总线带宽的15%。如图2所示,RAG3代表总存储器总线带宽的10%。最后,对应I/O控制器170的4个虚拟通道的RAG0-RAG3代表总存储器总线带宽的10%。虽然存储器总线的总总线带宽为100%,但是所有RAG指派的总线带宽百分比的总和不一定等于100%。具体地,由于全部总线使用率不总是处于处理器***100的正常情况,因此存储器带宽的总百分比有时可能加总后小于100%。在图2的示例中,存储器带宽的总百分比(即85%)描述了列220所示的所有百分比的总和。
图2中的I/O接口列230描述了RAM 110将管理的第二到第五个资源。这种链接资源包含I/O总线IOIF0-In 175、IOIF0-Out 180、IOIF1-In 185、以及IOIF1-Out 190。此四个I/O接口总线的每个总线代表RAM 110的特定带宽分配资源与I/O带宽总线分配百分率。具体地,如图2所示,RAM 110给特定HU指定特定RAG号,其接着给五个相关资源(即存储器存区220)的每个和四个I/O 230总线的每个指定显示为百分比的带宽分配率。图2中示出了IOIF0-In 175以代表RAG0的I/O接口总线带宽分配率为10%,RAG1的为20%、RAG2的为15%、RAG3的为15%、以及最后RAG0-RAG3的为20%。在存储器总线的情况中,总的总线带宽分配百分比不需要结合成总I/O接口总线带宽分配的100%。在列230中的IOIF0-Out 180代表RAG0的I/O接口总线带宽分配率为15%、RAG1的为10%、RAG2的为20%、RAG3的为25%、以及最后RAG0-RAG3的为15%。IOIF1-In 185代表RAG0的I/O接口总线带宽分配率为15%、RAG1的为20%、RAG2的为10%、RAG3的为10%、以及最后RAG0-RAG3的为10%。图2中所示的IOIF1-Out 190代表RAG0的I/O接口总线带宽分配率为10%、RAG1的为10%、RAG2的为30%、RAG3的为15%、以及最后RAG0-RAG3的为15%。在某些情况下,RAM 110可使用附加的RAG号指派来管理来自不具有目前带宽分配或令牌授权的正请求的HU的存储器或I/O请求。
图3示出包含资源分配标识符(RAID)寄存器355的硬件单元(HU)300的方块图。诸如处理器***100的多核处理器***可利用HU 300作为任一与所有其硬件单元。具体地,处理器***100可使用HU 300作为PPE 115、SPE-1-SPE-8以及I/O控制器170。然而,具有这种HU 300配置的处理器***100可能经历下述总线带宽分配指派问题。
硬件单元(HU)300包含指令管理器305与其他硬件306。指令管理器305包含多阶指令流水线,其管理下述每次讨论的指令执行。其他硬件306可以包含诸如本地高速缓存存储器、运算逻辑单元(ALU)、或适合于特定类型HU的其他硬件。例如,PPE或SPE类型的HU可以包含ALU,而I/O控制器类型的HU可能不包含ALU。
每个特定配置的HU、如处理器***100内的代表性的HU 300可初始化一系列程序软件指令,作为较大软件应用或在处理器***内执行的程序应用的一部分。特定硬件单元、HU 300接收来自在处理器***内执行的程序应用的一序列指令。程序应用的输出供给指令队列307的输入。HU 300将此指令放置于HU 300内的指令管理器305的指令队列307中。指令队列307耦接包含在HU 300内执行的下一个指令的指令寄存器310。HU 300解码在HU内执行的此下一个指令,例如存储器存储或I/O接口存储指令。此存储指令需要存储器或接口I/O请求。在此存储指令后,HU 300初始化的下一个指令从指令队列307移到指令寄存器310。
在指令存储序列期间,当HU完成存储指令的执行时,HU 300首先估计HU将写入数据的有效地址(EA)。指令管理器305包含一组一般目的寄存器(GPR)315,其包含促进计算写入指令的有效地址(EA)的操作数(operand)。一般目的寄存器(GPR)315耦接操作数寄存器320与操作数寄存器325。此指令寄存器310、操作数寄存器320、以及操作数寄存器325都耦接EA产生器330的各个输入。EA产生器330计算指令寄存器310中的存储指令的有效地址(EA)。EA产生器330的输出耦接EA寄存器335的输入,并提供其存储指令的有效地址。EA寄存器335的输出耦接有效向真实地址转译器(ERAT)340的输入。ERAT 340接收来自EA寄存器335的有效地址数据作为输入。
在存储器或I/O存储请求期间,HU 300使用软件应用操作架构内的有效地址转译器以产生真实地址。真实地址与存储器地址位置直接相关。具体地,真实地址对应于HU外的存储器位置,例如在IHS的***存储器(未图示)中。ERAT 340可用作使用在相关阵列中的页表转译数据的页表高速缓存的查询表(LUT)。另外,ERAT 340中的每个条目是页表条目(PTE)。ERAT 340的每个条目将有效地址(EA)映射至存储器的页的真实地址(RA)。此有效地址(EA)或虚拟地址代表进入ERAT 340页表高速缓存或存储器映射阵列的输入。ERAT 340数据表存储此真实地址(RA)以及与EA输入相关联的WIMG位。HU 300通过存储器页来组织ERAT高速缓存。ERAT 340的存储器页可呈现出固定大小或多个不同大小之一。这种存储器页代表在转译之下的地址的最高阶位组。在一个示例中,ERAT 340可转译一个4K字节的有效地址。在此特定示例中,ERAT 340没有使用有效地址的最低阶的12个位用于转译。具体地,ERAT 340将此有效地址的较低阶的12个位转译为页偏移(offset),其中4K字节的有效地址的较低阶的12个位在转译后维持不变。因此,此页代表有效与真实地址(RA)的剩余的较高地址位。
ERAT 340将WIMG位存储为存储器地址移转属性。具体地,在图3的示例中,ERAT 340将WIMG位存储为地址存储属性。WIMG位决定处理器***中的软件与硬件存取存储器的方式。WIMG位包含W位,其对应于地址请求的写回(write-back)或写过(write-through)状态,以及I位,其表示存储请求的高速缓存致能或高速缓存禁止状态。M位代表存储请求的本地或全局存取权。G位对应于地址存储请求的受保护或未保护状态。ERAT 340的输出耦接RA、WIMG寄存器345的输入。ERAT 340产生物理或真实地址RA,以及存储属性WIMG位的组作为输出。RA、WIMG寄存器345接收有效向真实地址转译模块ERAT 340的输出作为输入。RA、WIMG寄存器345的输出耦接先进先出(FIFO)流水线存储队列350的输入。存储队列350接收来自RA、WIMG寄存器345的指令序列。另外,HU 300将这种指令序列收集并存储于(FIFO)流水线存储队列350中。指令流水线存储队列350保留来自RA、WIMG寄存器345的后继指令。当HU 300执行目前的指令时,填满存储队列350允许新地址通过ERAT 340转译。目前的指令驻留于流水线(FIFO)存储队列350的最低位置。HU 300执行全满或部分满的存储队列350的目前指令,并等待此目前指令的存储器或I/O总线存取。
HU 300包含管理程序软件层352,如图3所示。另外,在HU 300内运行的管理程序352向RAID寄存器355填入代表RAG标识符的二位二维码。RAID寄存器355的输出耦接令牌请求器360的输入。当HU 300需要存储器或I/O总线操作时,令牌请求器360从资源分配管理器RAM 110请求令牌。RAID寄存器355包含标识四个RAG之一,即RAG0、RAG1、RAG2、或RAG3的两个二维位的数据。具体地,RAG0到RAG3直接对应于RAM 110中的各个带宽分配率。HU 300读取存储队列350的最低条目,并通过发送RAID寄存器355中的RAID位值到令牌请求器360来初始化I/O请求。随后,令牌请求器360在耦接RAM 110的输出信号令牌请求线365上,产生输出信号令牌请求。以此方法,令牌请求器360发送存储器总线存取的请求给资源分配管理器RAM 110。输出信号令牌请求包含来自RAID寄存器355的两个HU 300RAID位。来自RAID寄存器355的此两个RAID位分别代表HU 300的RAG标识符RAG0到RAG3。RAM 110收到此令牌请求,并估计HU 300所需带宽分配率。RAM 110利用目前的带宽使用量来估计HU 300的RAID标识符位,并通过在令牌授权线370上产生令牌授权信号,此令牌授权线370将此令牌授权传给令牌请求器360,来发布令牌授权。
具体地,在RAM 110内适当的时间与带宽分析完成时,RAM 110在线370输入上产生令牌授权信号。存储队列350的输出耦接开关375的一个输入。开关375代表在授权令牌后允许继续进行资源请求的硬件。若存储队列350的输出是存储器存储指令,则此存储请求需要使用存储器总线165。若存储队列350的输出是I/O存储指令,则此存储请求需要使用I/O总线175-190。HU 300估计存储队列350的输出,以决定存储请求需要哪个总线、即存储器总线165或I/O总线175-190。开关375有效地连接或切断存储队列350的输出与图1的处理器***100的存储器控制器160/***存储器165、或I/O控制器170/I/O总线175-190。此开关是受耦接HU 300的开关375的令牌请求器360的控制。当令牌请求器360在令牌授权线370上收到来自RAM 110的令牌授权信号时,HU 300有效地关闭开关375,并初始化存储操作的最后阶段。另外,HU 300允许存储队列350的最低条目通过开关375作移转,并存取存储器总线165或I/O总线175-190,因而根据存储操作的类型,将真实地址和WIMG位放置于存储器或I/O总线中。存储数据以及数据大小伴随着此真实地址和WIMG位数据。
上述方法描述了图1的处理器***内的存储操作。或者,处理器***100可管理不产生写入数据而是请求读取数据的载入操作。具体地,在载入操作期间,处理器***100不在I/O接口总线170-190上或通过存储器总线165在***存储器中写入数据。载入操作包含两个阶段。在第一阶段,HU初始化载入请求,并最终将真实地址放置于存储器总线165或I/O接口总线170-190上。在第二阶段,在处理器***得到载入数据后,处理器***将载入数据呈现给正请求的HU,载入操作完成。真实地址、WIMG位、以及RAID位在载入操作与存储操作中是扮演相同的角色。然而,为了简化,以下描述着重在存储操作。
参照图1与图2,RAM 110在RAM 110的控制寄存器195中指派特定RAG号给处理器***100的每个HU。另外,RAG号指派在区分处理器***的每个硬件单元HU的特定带宽分配率方面提供灵活性。然而,在每个HU内的程序应用或特定指令之间区分带宽分配率需要补充的操作。
再次参照图1与图2,修改RAM 110中的控制寄存器195中的数据是基于每个指令改变总线带宽分配率指派的一种方法。具体地,管理程序352可通过以新的总线带宽值重新编程RAM 110内的资源控制寄存器195,来修改带宽分配率。一旦完成对资源控制寄存器195的存储操作,请求存储的特定HU以应用了新总线带宽率的新RAG数值指派来初始化所有新的总线操作。处理器***100的***软件执行指令,此指令将依次与呈现新带宽分配率的一个或多个RAG相关。可惜的是,此方法可能需要多个总线周期才能完成,并因此可能导致处理器***100的无效率的处理。
重新编程RAID寄存器355中的RAID位指派提供基于每个指令来改变带宽分配率指派的另一种方法。图3的RAID寄存器355的修改对特定HU而言仍维持在内部,以至于无需长周期时间的外部存储操作。可惜的是,RAM110限制对那些现有RAG号的新的RAID寄存器355指派和已存在于RAM110的控制寄存器的带宽分配率指派。***编程器或处理器***编译器必须认识RAID重新指派,并产生适当顺序的指令,以允许改变的发生,而不在特定HU内发生冲突。另外,HU 300必须在任意两个邻近的存储指令间***SYNC声明(statement),以在最后的RAID修改前,冲刷所有存储指令的指令队列307,并保留请求新带宽分配率的下一个存储操作的队列。具体地,此队列必须进入保留状态,将在需要新带宽分配率的存储操作之前的所有指令清空。接着,管理程序352用新资源分配标识符产生对RAID寄存器355的载入。一旦HU 300以SYNC命令冲刷此队列,先前的存储操作必须在为下一个操作释放总线前,完成其总线周期。接着,特定HU执行受惠于新RAID位指派的存储指令。可惜的是,以上述方法发布SYNC命令可能对处理器***性能产生重大的负面影响,因为SYNC声明导致多个指令队列流水线延迟。由于这些原因,对于在图1的处理器***100中的HU使用图3的HU 300的HU配置可能不理想。
图4示出代表性的硬件单元(HU)400的方块图,该硬件单元(HU)400在特定HU内,使用基于每个指令或每个存取请求允许不同的带宽分配率的所公开的方法。在所公开的方法及装置的一个实施例中,每个指令可对应于特定I/O总线带宽分配率,而不引入不理想的长期延迟SYNC命令、或修改RAM 110RAID寄存器数据的附加存储指令。
图5是包含半导体晶模(die)505的处理器***500的方块图。处理器***500使用诸如HU 400的各个硬件单元作为其每个硬件单元。具体地,处理器***500可使用HU 400作为SPE-511-SPE-518、PPE 519、以及I/O控制器520。处理器***500可利用上述细胞宽带引擎(CBE)的架构,来配置形成多核处理器***的多个核。处理器***500包含耦接至存储器总线530的存储器控制器525。存储器总线530耦接***存储器(未图示)。处理器***500的I/O控制器520、也称为I/O接口(IOIF)控制器520耦接I/O总线535。I/O总线535包含IOIF0-IN总线540以及IOIF0-OUT总线545、IOIF1-IN总线550以及IOIF1-OUT总线555,如图5所示。
处理器***500包含资源分配管理器(RAM)560,其管理存取存储器总线530与I/O总线535的请求。RAM 560包含资源控制寄存器565,其控制对请求器的资源分配。在一实施例中,图5的RAM 560可呈现与图1的RAM 110相同的配置与功能。
参照图4,硬件单元(HU)400包含指令管理器405以及其他硬件406。指令管理器405包含多阶指令流水线,其以下述方式管理指令执行。硬件406可以包含诸如本地高速缓存存储器、运算逻辑单元(ALU)、或适合于特定类型的HU的其他硬件的硬件。例如,PPE或SPE类型的硬件单元可以包含运算逻辑单元,而I/O控制器的HU可能不包含ALU。
处理器***500内的每个特定配置的HU(例如代表性的HU 400)可初始化一系列的软件程序指令,作为较大型的软件应用或在处理器***内执行的程序应用的一部分。特定硬件单元、HU 400接收在处理器***500内执行的程序应用的指令序列。此程序应用输出馈送指令队列407的输入。HU 400将这种指令放置于指令管理者405的指令队列407中。指令队列407耦接包含在HU 400内执行的下一个指令的指令寄存器410。HU 400利用解码器(未图示)来解码在HU 400内执行的下一个指令,例如需要***存储器请求或I/O接口请求的存储指令。在此存储指令之后,HU 400初始化的下一个指令从指令队列407移到指令寄存器410。在指令存储序列期间,HU 400首先估计当HU完成此存储指令的执行时HU将写入数据的有效地址。
指令管理器405包含一组一般目的寄存器(GPR)415,其包含促进写入指令的有效地址(EA)的解码的操作数。一般目的寄存器415耦接第一操作数寄存器420以及第二操作数寄存器425。指令寄存器410、第一操作数寄存器420、以及第二操作数寄存器425都耦接EA产生器430的各个输出。EA产生器430计算指令寄存器410中的存储指令的有效地址(EA)。EA寄存器435耦接EA产生器430的输出,并且接收来自EA产生器430的有效地址的运算作为输入。EA产生器435的输出耦接有效向真实地址转译器(ERAT)440的输入。指令管理器405的各元件形成流水线结构,其中信息从一个阶段经过另一个阶段、或从一元件到另一元件。例如,指令队列407、ERAT 440、寄存器445、以及FIFO存储队列700都是此流水线中某阶段的示例。
图6显示了页数条目的代表性的ERAT 440。典型的ERAT可以包含32个条目,然而ERAT可更多或更少。另外,ERAT 440中的每个条目是页表条目(PTE)。ERAT 440包含高速缓存转译数据的许多条目,并使用写入指令或存储指令的有效地址EA或有效页数(EPN)作为输入。如图6所示,详细显示了高速缓存转译数据的多个条目的前三个条目。ERAT 440查询表(LUT)包含有效地址(EA)向真实地址(RA)或真实页数(PRN)数据。ERAT表的每列将有效页数(EPN)映射到真实页数(RPN)。ERAT 440也包含WIMG位以及与RA数据相关联的RAID位。具体地,RAID位是ERAT 440的页表条目(PTE)的属性。ERAT 440可以包含其他属性(未图示)。ERAT 440不需要转译EA输入的页偏移、或低阶位。另外,ERAT 440不需要存储EA的低阶位及RA页表数据。在此示例中,在ERAT 440的顶部条目中,HU 400使用有效地址EA3作为ERAT 440的输入。ERAT 440输出真实地址RA3数据。显示为0101的WIMG位分别代表W、I、M、和G位。对应于真实地址RA3的写回或写过状态的W位是0,因此指定写回状态。对应RA3的高速缓存致能或高速缓存禁止状态的I位是1,因此指定高速缓存禁止。对应于真实地址RA3的本地存取或全局存取的M位是0,因此指定本地存取。对应于真实地址RA3的未保护或受保护状态的G位是1,因此指定受保护状态。为00的RAID指派(即0)将RA3数据和EA3输入与ERAT 440相关联。
在转译数据的ERAT 440高速缓存中的下一个条目是被显示为EA2的有效地址。HU 400利用有效地址EA2作为对ERAT 440的输入。ERAT 440输出真实地址RA2数据。显示为0101的WIMG位分别代表W、I、M、和G位。对应于真实地址RA2的写回或写过状态的W位是0,因此指定写回状态。对应RA2的高速缓存致能或高速缓存禁止状态的I位是1,因此指定高速缓存禁止状态。对应于真实地址RA2的本地存取或全局存取的M位是0,因此指定本地存取。对应于真实地址RA2的未保护或受保护状态的G位是1,因此指定受保护状态。为11的RAID指派(即3)将RA2数据和EA2输入与ERAT440相关联。
在转译数据的ERAT 440高速缓存的下一个条目被显示为EA1的有效地址。HU 400利用有效地址EA1作为ERAT 440的输入。ERAT 440输出真实地址RA1数据。显示为0101的WIMG位分别代表W、I、M、和G位。对应于真实地址RA1的写回或写过状态的W位是0,因此指定写回状态。对应RA1的高速缓存致能或高速缓存禁止状态的I位是1,因此指定高速缓存禁止状态。对应于真实地址RA1的本地存取或全局存取的M位是0,因此指定本地存取。对应于真实地址RA1的未保护或受保护状态的G位是1,因此指定受保护状态。为01的RAID指派(即1)将RA2数据和EA2输入与ERAT 440相关联。在图6中,多个条目(未图示)代表有效向真实地址转译器EA 440的转译数据的整个高速缓存。
EART 440接收来自EA寄存器435的有效地址数据作为输入。在存储请求期间,HU 400在软件应用操作架构内使用有效地址转译,以产生真实地址。真实地址直接与存储器地址位置相关。具体地,真实地址对应于HU外部的物理存储器位置,诸如IHS的***存储器。ERAT 440典型地利用图6中所示的关联性阵列中的转译数据的页表高速缓存,来与查询表(LUT)一样运作。有效地址(EA)或虚拟地址代表ERAT 440页表高速缓存阵列的输入。ERAT 440页表保留真实地址(RA)、欲写入的数据的大小、欲写入的数据、WIMG位、以及与EA输入相关的资源分配标识符(RAID)位。代表RAG标识符的两个RAID位驻留于ERAT 440中。因为RAID位驻留于ERAT 440中,因此HU 400不像图3的HU 300那样需要RAID寄存器。另外,在此特定实施例中,HU 400包含管理程序442,即HU 400中的软件或固件层,其将此两个RAID位指派给ERAT 440中的页,因而在ERAT 440进行的地址转译处理期间,为每个指令提供唯一RAID。管理程序442代表有特权的***软件层,其呈现比处理器***100的其他***软件更高的处理器***特权,诸如读取存取和修改权。管理程序442包含可在HU上执行的指令。管理程序指令存取***控制工具,诸如RAID寄存器、RAM 110、以及ERAT 440高速缓存的地址转译表。操作***、或管理程序代码、以及应用通常没有这样的存取特权。处理器***100的管理程序442一般不直接在SPE、即SPE-1到SPE-8上执行。然而,管理程序442直接在PPE 115上执行,并呈现出利用各种机制(未图示)修改在SPE内的***控制工具的能力。在一实施例中,管理程序442维持地址转译表,其中ERAT作为其高速缓存。RAID信息与管理程序维持的地址转译表相关联。RAID信息是ERAT 440中的页表条目(PTE)的属性。在执行期间,I/O接口操作和存储器操作通过ERAT 440而操作,使得I/O接口操作与存储器操作都具有可用的唯一的资源分配标识符RAID。管理程序442将唯一的RAID位指派分配给转译数据的ERAT 440高速缓存的每个条目。另外,管理程序442指派唯一的RAID位指派,以对于每个条目以及ERAT 440高速缓存内的指令使用不同的带宽分配率。在处理器***500的HU内执行的应用软件可转译特定带宽分配率的需求,并进一步指挥管理程序442基于每个指令而改变ERAT 440中的RAID位指派。
ERAT 440的页表高速缓存中的每个条目都对应于页表条目PTE。ERAT440页代表在转译之下的地址或有效地址(EA)的最高阶的位组。在所公开的装置与方法的一个实施例中,ERAT 440将4K字节的有效地址(EA)转译为真实地址(RA)。在此转译处理中,ERAT 440不转译此有效地址EA的较低阶的12位。具体地,ERAT 440将此有效地址EA的此较低阶的12位转译为页偏移,其中此4K字节的有效地址EA的此较低阶的12位在转译后维持不变。在转译之下的EA的页或较高的位代表有效地址EA向真实地址RA转译的所剩余的较高地址位。
ERAT 440将WIMG位存储为存储器地址移转属性。具体地,在图4的实施例中,ERAT 440将WIMG位存储为地址存储属性。WIMG位决定处理器***中的软件与硬件存取***存储器的方式。WIMG位包含用于地址请求的对应于写回或写过状态的W位。I位代表存储请求的高速缓存致能或高速缓存禁止状态。M位代表存储请求的本地存取或全局存取权。G位对应于地址存储请求的受保护或未保护状态。ERAT 440的输出耦接RA、WIMG、RAID寄存器445的输入。ERAT 440产生物理或真实地址RA、存储属性WIMG位组、以及RAID位作为其输出。RA、WIMG、RAID寄存器445接收有效向真实地址转译器ERAT 440的输出作为输入。RA、WIMG、RAID寄存器445提供RA、WIMG、以及HU 400所执行的指令的对应的RAID位的暂时存储。RA、WIMG、RAID寄存器445的输出耦接图7的流水线先进先出(FIFO)存储队列700的输入。(FIFO)存储队列700接收来自RA、WIMG、RAID寄存器445的指令序列。HU 400将这种指令序列收集并存储于流水线(FIFO)存储队列700中。另外,此流水线指令(FIFO)存储队列700保留来自RA、WIMG、RAID寄存器445的后继指令。当HU 400等目前指令上的存储器总线存取时,填满(FIFO)存储队列700允许新地址通过ERAT 400而转译。目前指令驻留于(FIFO)存储队列700的最低位置中。HU 400执行全满或部分满(FIFO)存储队列700的目前指令,并等待目前指令的存储器或I/O总线存取。
FIFO存储队列700的RAID位是标识四个RAG(即RAG0、RAG1、RAG2、或RAG3)之一的两个二维位数据。更具体地,RAG0到RAG3直接对应于RAM560中的带宽分配率。FIFO存储队列700的输出耦接令牌请求器460的输入,以向其提供RAID位数据。HU 400读取FIFO存储队列700的最低条目,并通过发送FIFO存储队列700中的RAID位给令牌请求器460,而初始化存储器总线存取或I/O总线存取的请求。随后,令牌请求器460在令牌请求线465上产生令牌请求。此令牌请求经过令牌请求线465而到资源分配管理器(RAM)560,作为存储器总线存取或I/O总线存取的请求。线465上的令牌请求包含来自RA、WIMG、RAID寄存器445的HU 400 RAID位。RAM 560接收此令牌请求,并估计对应的HU 400的带宽分配率。RAM 560利用目前的带宽使用量来估计HU 400的RAID标识符位,并通过在将令牌授权传回令牌请求器460的令牌授权线470上产生令牌授权信号,来发布令牌授权。当在RAM560内的适当时间与带宽分析结束后,RAM 560产生此令牌授权。
FIFO存储队列700的输出耦接开关475的输入。若FIFO存储队列700的输出发布存储器存储指令,即对存储数据的存储器存取请求,则此存储请求需要使用存储器总线530。若FIFO存储队列700的输出发布I/O存储指令,则此存储请求需要使用I/O总线535。HU 400估计FIFO存储队列700的输出,来决定存储请求需要哪个总线、即存储器总线530或I/O总线535。开关475有效地连接或断开FIFO存储队列700的输出与图5处理器***500的存储器控制器525/***存储器总线530、或I/O控制器520/I/O总线535。此开关是受令牌请求器460的控制,此令牌请求器460耦接至HU 400的开关475。当令牌请求器460在令牌授权线470上收到来自RAM 560的令牌授权信号时,HU 400有效地关闭开关475,并初始化存储操作的最终阶段。另外,HU 400允许FIFO存储队列700的最低条目通过开关475而移转,并存取存储器总线530或I/O总线535,进而将真实地址和WIMG位放置在存储器或I/O总线上。存储数据与数据大小伴随着此真实地址和WIMG位数据。
上述公开的方法描述了代表性的存储操作,其中图5的处理器***500使用图4的特殊配置的硬件单元(HU)400。虽然该示例涉及存储操作,但处理器500中的HU也可利用所公开的方法执行载入操作。载入操作不产生写入数据,但请求读取数据。在载入操作期间,处理器***500不将数据写入I/O接口总线535、或通过存储器总线530写入***存储器。此载入操作包含两个阶段。在载入操作的第一阶段,HU 400初始化载入请求,并在ERAT 440的有效向真实地址转译后,最终将真实地址放置在存储器总线530上。在载入操作的第二阶段,处理器***500在特定目标地址处得到此存储器数据,并将此存储器数据呈现给在存储器总线530上的HU。接着,此载入操作完成。在比较HU 400的存储操作与HU 400的载入操作时,真实地址、WIMG位、与RAID位在这些操作中都扮演实质相同的角色。因此,上述有关HU 400的存储操作的执行的教导也可用于HU 400所执行的载入操作。
在处理器***500的代表性HU 400中的指令等级带宽分配提供了管理多个应用的能力,其中每个应用都需要不同的I/O总线使用率和/或存储器总线存取率。所公开的方法特别可用于当在相同HU上运作的多个操作***在每个操作***的I/O总线使用量与存储器总线使用量方面需要特定的不同带宽分配率。
图7示出图4的HU 400中所使用的FIFO存储队列700的代表性配置。具体地,图7描述在ERAT 440转译后暂时驻留于RA、WIMG、RAID寄存器445的最低的3个存储指令。ERAT 440转译这种存储指令,并接着通过寄存器445将转译过的指令放置于FIFO存储队列700中的各个存储位置上。图7显示FIFO存储队列700的元素,为每个指令的真实地址RA、WIMG位、指令数据大小、存储数据、以及RAID位。存储指令、即存储-1指令代表离开FIFO存储队列700用于HU完成执行的下一个指令。FIFO存储队列700包含存储-1指令的RA1的真实地址RA。RA1可代表64位地址,其中最低的12位与ERAT 440的有效地址输入相同。在一实施例中,FIFO存储队列700可能不存储此较低的12位。EA和RA的较低12位代表4KB的地址页偏移。在此示例中,64位真实地址RA剩余的较高52位代表真实地址RA1条目。显示为0101的WIMG位示例分别代表W、I、M、和G位。这种WIMG位是可影响硬件单元(HU)存取存储器或I/O总线的方式的存储器地址移转属性。对应于真实地址RA1的写回或写过状态的W位是0,因此指定写回状态。对应于RA1的高速缓存致能或高速缓存禁止状态的I位是1,因此指定高速缓存禁止状态。对应于真实地址RA1的本地存取或全局存取的M位是0,因此指定本地存取。对应于真实地址RA1的未保护或受保护状态的G位是1,因此指定受保护状态。图7中,FIFO存储队列700示出指令存储-1的代表性数据大小为4字节。存储-1的存储操作的数据大小因此为4字节的数据。FIFO存储队列700包含在图7中标示为D1且大小为4字节的存储操作存储-1的数据。存储-1指令呈现01(即1)的相关RAID位指派。在此示例中,RAID指派为1表示存储-1指令将具有为1的RAG号指派,并具有RAM 560指派给RAG1的相关总线带宽率。
如图7所示,FIFO存储队列700的代表、在存储-1指令之后的在FIFO存储队列700中的下一个指令是存储-2指令。FIFO存储队列700存储用于存储-2指令的RA2的真实地址RA。RA2可代表64位地址,其中较低的12位与ERAT 440的有效地址输入相同。在一实施例中,FIFO存储队列700可以不存储此较低的12位。EA和RA的较低12位代表4KB的地址页偏移。在此示例中,真实地址RA的较高52位代表真实地址RA2条目。示出为1101的WIMG位示例分别代表W、I、M、与G位。对应于真实地址RA2的写回或写过状态的W位是1,因此指定写过状态。对应于RA2的高速缓存致能或高速缓存禁止状态的I位是1,因此指定高速缓存禁止状态。对应于真实地址RA2的本地存取或全局存取的M位是0,因此指定本地存取。对应于真实地址RA2的未保护或受保护状态的G位是1,因此指定受保护状态。在图7中,FIFO存储队列700显示指令存储-2的代表性大小为8字节。存储-2的存储操作的数据大小因此为8字节的数据。FIFO存储队列700包含图7中标示为D2并大小为8字节的存储操作存储-2的数据。为11(即3)的RAID位指派与存储-2指令相关。因此,RAM 560指派RAG3的总线带宽率给存储-2指令。
在存储-2指令FIFO之后的在存储队列700中的下一个指令被示出为存储-3指令。FIFO存储队列700为图7中的存储-3指令存储RA3的真实地址RA。RA3可代表64位的地址,其中较低的12位与ERAT 440的有效地址输入相同。在一实施例中,FIFO存储队列700可以不存储此较低的12位。EA和RA的较低12位代表4KB的地址页偏移。在此示例中,真实地址RA的较高52位代表真实地址RA2条目。被示出为0110的WIMG位示例分别代表W、I、M、与G位。对应于真实地址RA3的写回或写过状态的W位是0,因此指定写回状态。对应于RA3的高速缓存致能或高速缓存禁止状态的I位是1,因此指定高速缓存禁止状态。对应于真实地址RA3的本地存取或全局存取的M位是1,因此指定全局存取。对应于真实地址RA3的未保护或受保护状态的G位是0,因此指定未保护状态。在图7中,FIFO存储队列700示出指令存储-3的代表性数据大小为2字节。存储-3的存储操作的数据大小是2字节的数据。FIFO存储队列700包含标示为D3并为2字节大小的存储操作存储-3的数据。为00(即0)的RAID位指派与存储-3指令相关。RAM 560指派RAG0的总线带宽率给存储-3指令,因而完成存储指令数据填入FIFO存储队列700。RAID位指派包含0、1、2、和3,其中一对不同的2位对应于每个RAID位指派。RAID位指派直接将RAG号与指派RAG0、RAG1、RAG2、和RAG3相关联。在某些应用中,若特定应用需要较小号的RAG,则处理器***500和HU 400可使用比2小的位数。例如,为0或1的单一位字段可代表两个RAG。在某些应用中,若特定应用需要比4大的RAG号,则处理器***500和HU 400可使用比2大的位数。
图8是描述图4的代表性硬件单元(HU)400执行存储指令或写入指令的流程图。处理器***500内的硬件单元(HU)能够执行这种存储请求。存储指令的执行开始于开始方块805。在任何一个HU上执行的应用软件可初始化存储指令,也称为写入指令或写入操作。管理程序442可间接地通过转译表(未图示)、以及以指令为基础在指令上的初始的转译数据与真实地址RA、WIMG位,并包含资源分配标识(RAID)位,来载入ERAT 440,如方块810。在ERAT 440中的每个条目包含对应于查询地址或有效地址EA的指令。在特定HU中的指令解码器(未图示)将解码指令,如方块815。在HU 400中的指令解码器或相关硬件接着进行测验,以判断被解码的指令是否为存储指令,即写入请求,如判断方块820。若被解码的指令的测验返回的结果为否,其中被解码的指令不是存储指令,则执行非存储指令,如处理非存储指令方块822。流程回到方块815,且指令解码器解码下一个指令。然而,若存储指令测验在判断方块820处回复的结果为是,则HU决定存储指令的有效目标地址,如决定有效地址(EA)方块825。接着,HU将存储指令数据与其有效地址移到ERAT 440用于估计。若EA条目已存在于有效向真实地址转译器ERAT中,则ERAT 440将有效地址(EA)转换为对应的真实地址(RA)。具体地,ERAT440利用有效地址(EA)作为在查询表LUT中的查询数据,并搜寻在ERAT 440中的EA数据,如方块830。若ERAT 440目前将EA存储于其LUT存储器中,则ERAT 440将输出在LUT存储器中的对应的RA。这在判断方块840中表示“击中(hit)”、或成功转译。然而,若在测验中,ERAT LUT存储器中包含特定EA的数值,则判断方块840的击中测试回复否定结果。在判断方块840中没有EA击中状态的情况下,HU初始化服务转译请求,如方块845。服务转译请求导致适当的ERAT转译数据的产生,并将ERAT转译数据载入ERAT LUT存储器,如方块850。在ERAT LUT存储器的成功载入后,HU再次试图在ERAT 440中寻找EA,如方块830所示。若方块840的有效地址击中测验对对象的存储指令或操作回复是的结果,其中ERAT高速缓存包含EA的匹配,则HU移转该指令的对应的RA、WIMG位、和资源分配标识(RAID)到FIFO存储队列700中,如方块870。在此示例中,方块870意指WIMG位。然而,在所公开的方法的其他实施方式中,硬件单元(HU)可使用比WIMG例子更多的控制位或更少的控制位,这些控制位依据特定应用对应于其他地址移转属性。
在一实施例中,HU 400将指令载入FIFO存储队列700,并以指令载入的顺序来执行每个指令。例如,在图7中,最低的指令存储-1是执行的下一个队列指令。执行存储-1指令后,存储-2指令移到FIFO存储队列700的最低位置,并成为执行的下一个指令。存储-3指令移到在存储队列中的较低位置,而新指令进入到存储队列的较高位置。回到图8的流程图,队列指令中的下一个是FIFO存储队列700的最低条目。HU 400前进到FIFO存储队列700的前端,如方块875所示。HU 400接着初始化令牌请求、或请求令牌,如方块880所示。具体地,HU 400的令牌请求器460从资源分配管理器(RAM)560请求令牌,即请求使用存储器总线530或I/O接口总线535,用于存储操作。在继续存储指令操作之前,HU 400等待直到RAM 560授权令牌请求。令牌请求器460测试以决定RAM 560是否通过授权令牌而回应,如授权令牌判断方块885所示。若令牌授权测试回复否的结果,则HU 400维持保留并观察状态,如判断方块885所示。然而,若令牌授权测试回复是的结果,则HU400将存储请求数据放到存储器总线530或I/O接口总线535上,如方块890所示。在存储器存储操作的示例中,存储器总线530接着将存储请求数据转移到***存储器,用于在其中存储。HU也可如以上相同方式请求I/O接口总线535移转。在该情况下,HU将通过I/O接口控制器520,将得到的I/O数据放到I/O接口总线535上。因此,将“请求放到总线上”的方块890应用于将从存储指令得到的数据放到存储器总线165,以及将从I/O请求指令得到的数据放到I/O总线535。最后,在成功的存储指令操作后,HU 400解码下一个指令,且操作流程继续,如方块815所示。图8的示例描述处理器***100的代表性存储或写入操作。示范了所示实施例的有效率性的另一类操作是载入或读取操作。虽然在总线上的存储与载入数据(即读、写数据)的变化代表在此二种操作类型之间的相异之处,且图8所示的机制与方法代表该结构的相同的基本元件。另外,RAID位的特殊使用表示在载入与存储操作之间共同的元件。
图9示出使用处理器905的代表性的数据管理***(IHS)900的简化方块图。在一个实施例中,处理器905是包含HU 400的处理器***500。IHS 900还包含总线910,其将处理器905耦接存储器控制器525与视频图形控制器920。具体地,***存储器总线530耦接如图示的***存储器915。实际上,总线910可以包含多个总线,例如存储器总线与I/O总线。显示器925耦接视频图形控制器920。诸如硬盘驱动器、CD驱动器、DVD驱动器、或其他非易失性存储的非易失性存储930耦接总线910,以给IHS 900提供信息的永久存储。操作***935载入存储器915,以管理IHS 900的操作。其他***软件、即应用软件940与管理程序945驻留于存储器915中以进一步管理IHS900的操作。例如键盘与鼠标指标装置的I/O装置950通过I/O总线535与I/O控制器520耦接到总线910。诸如USB、IEEE 1394总线、ATA、SATA、PCI、PCIE与其他总线的一个或多个扩展总线955耦接总线910,以促进IHS 900与周边元件及装置的连接。网络接口适配器960耦接总线910,以致能IHS900,以有线或无线方式连接到网络及其他信息管理***。虽然图9示出了使用处理器***500作为处理器905的一个IHS,但IHS也可为许多形式。例如,IHS 900可采用台式计算机、服务器、膝上计算机、手提计算机、或其他形式的计算机或数据处理***的形式。IHS 900可采用其他形式,例如游戏装置、个人数字助理(PDA)、携带型电话装置、通信装置或包含处理器及存储器的其他装置。
以上公开一种处理器***及方法,可提供存储器总线与I/O接口总线带宽的改进。在一实施例中,此处理器***可基于每个指令或每个请求来分配存储器总线和/或I/O总线带宽。
鉴于本发明的描述,本领域技术人员将清楚本发明的修改和替换实施例。由此,本描述教导本领域技术人员实施本发明的方式,且仅供示例之用。所示和所描述的发明的形式组成本实施例。本领域技术人员在部分的形状、大小及排列上进行各种改变。例如,本领域技术人员可以用等同元件替换在此所示及所描述的元件。另外,本领域技术人员在了解本发明的描述后,可在不偏离本发明的范畴的情况下使用与其他特征无关的本发明的某些特征。
Claims (22)
1.一种由包含多个硬件单元的处理器存取共享资源的方法,该方法包含:
由该处理器中的硬件单元接收指令,以执行对该共享资源的存取请求的需求;以及
当该指令经过该硬件单元中的多个流水线阶段时,提供资源分配标识信息给该指令,在该硬件单元中的流水线阶段到流水线阶段间,该资源分配标识信息伴随着该指令,其中所述资源分配标识信息标识带宽分配率,并且每个指令被配置为可对应特定带宽分配率,
其中该硬件单元中的存取请求器将对存取该共享资源的存取请求发送至资源分配管理器,该资源分配管理器位于该硬件单元外部,并与该处理器的该多个硬件单元通信,该流水线阶段包括存储队列,该存取请求器基于逐个指令,为该存储队列中的指令和相关的资源分配标识信息发送存取请求,因而提供包含了在该存储队列中的各个指令的资源分配标识信息的存取请求。
2.如权利要求1所述的方法,其中该流水线阶段之一是地址转译流水线阶段,其实施对该指令的有效向真实地址转译,在该地址转译流水线阶段,该资源分配标识信息关联该指令。
3.如权利要求2所述的方法,其中,在该地址转译流水线阶段的地址转译后,该存储队列接收该指令和相关的资源分配标识信息。
4.如权利要求1、2或3所述的方法,其中该提供步骤包含由在该硬件单元中执行的管理程序提供该资源分配标识信息。
5.如权利要求1所述的方法,还包含由该资源分配管理器根据在该存取请求中的该资源分配标识信息,给该存取请求分配该共享资源的带宽。
6.如权利要求1所述的方法,其中该存取请求是存储器存取请求和I/O存取请求中的一种。
7.如权利要求1所述的方法,其中该共享资源是存储器和I/O装置中的一种。
8.一种处理器,包含:
多个硬件单元,位于半导体模上,该多个硬件单元被配置以存取共享资源,该多个硬件单元包含第一硬件单元;
该第一硬件单元包含多个流水线阶段,其中该第一硬件单元接收指令,以执行对该共享资源的存取请求的需求,当该指令经过该第一硬件单元中的多个流水线阶段时,该第一硬件单元提供资源分配标识信息给该指令,其中所述资源分配标识信息标识带宽分配率,并且每个指令被配置为可对应特定带宽分配率,
其中该第一硬件单元包含存取请求器,其将对存取该共享资源的存取请求发送至资源分配管理器,该资源分配管理器位于该第一硬件单元外部,且耦合至该处理器的该多个硬件单元,该流水线阶段包括存储队列,该存取请求器基于逐个指令,为该存储队列中的指令和相关的资源分配标识信息发送存取请求,因而提供包含了在该存储队列中的各个指令的资源分配标识信息的存取请求。
9.如权利要求8所述的处理器,其中除了该第一硬件单元之外的其它多个硬件单元每个都包含多个流水线阶段,其中这种其它硬件单元接收指令,以执行对该共享资源的该存取请求的需求,当该指令经过该其它硬件单元中的多个流水线阶段时,这种其它硬件单元提供资源分配标识信息给该指令。
10.如权利要求8所述的处理器,其中该第一硬件单元的流水线阶段之一是地址转译流水线阶段,其实施对该指令的有效向真实地址转译,在该地址转译流水线阶段,该资源分配标识信息关联该指令。
11.如权利要求10所述的处理器,其中在该地址转译流水线阶段的地址转译后,该存储队列接收该指令和相关的资源分配标识信息。
12.如权利要求8到11中的任何一个所述的处理器,其中该第一硬件单元执行管理程序,其提供该资源分配标识信息给该指令。
13.如权利要求8所述的处理器,还被配置以便该资源分配管理器可操作以根据在该存取请求中的该资源分配标识信息,给该存取请求分配该共享资源的带宽。
14.如权利要求8所述的处理器,其中该存取请求是存储器存取请求和I/O存取请求中的一种。
15.如权利要求8所述的处理器,其中该共享资源是存储器和I/O装置中的一种。
16.一种信息管理***,包含:
共享资源;以及
耦合至该共享资源的处理器,该处理器包含存取该共享资源的多个硬件单元,该多个硬件单元包含第一硬件单元;
该第一硬件单元包含多个流水线阶段,其中该第一硬件单元接收指令,以执行对该共享资源的存取请求的需求,当该指令经过该第一硬件单元中的多个流水线阶段时,该第一硬件单元提供资源分配标识信息给该指令,其中所述资源分配标识信息标识带宽分配率,并且每个指令被配置为可对应特定带宽分配率,
其中该第一硬件单元包含存取请求器,其将对存取该共享资源的存取请求发送至资源分配管理器,该资源分配管理器位于该第一硬件单元外部,且耦合至该处理器的该多个硬件单元,该流水线阶段包括存储队列,该存取请求器基于逐个指令,为该存储队列中的指令和相关的资源分配标识信息发送存取请求,因而提供包含了在该存储队列中的各个指令的资源分配标识信息的存取请求。
17.如权利要求16所述的信息管理***,其中该第一硬件单元的流水线阶段之一是地址转译流水线阶段,其实施对该指令的有效向真实地址转译,在该地址转译流水线阶段,该资源分配标识信息关联该指令。
18.如权利要求17所述的信息管理***,其中,在该地址转译流水线阶段的地址转译后,该存储队列接收该指令和相关的资源分配标识信息。
19.如权利要求16-18之一所述的信息管理***,其中,该第一硬件单元执行***管理程序,该***管理程序向所述指令提供资源分配标识信息。
20.如权利要求16所述的信息管理***,还被配置以便该资源分配管理器可操作以根据在该存取请求中的该资源分配标识信息,给该存取请求分配该共享资源的带宽。
21.如权利要求16所述的信息管理***,其中该存取请求是存储器存取请求和I/O存取请求中的一种。
22.如权利要求16所述的信息管理***,其中该共享资源是存储器和I/O装置中的一种。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/671,508 | 2007-02-06 | ||
US11/671,508 US8407451B2 (en) | 2007-02-06 | 2007-02-06 | Method and apparatus for enabling resource allocation identification at the instruction level in a processor system |
PCT/EP2008/051122 WO2008095844A1 (en) | 2007-02-06 | 2008-01-30 | Method and apparatus for enabling resource allocation identification at the instruction level in a processor system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101606130A CN101606130A (zh) | 2009-12-16 |
CN101606130B true CN101606130B (zh) | 2014-05-07 |
Family
ID=39471983
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200880004207.9A Expired - Fee Related CN101606130B (zh) | 2007-02-06 | 2008-01-30 | 在处理器***的指令级使能资源分配标识的方法和装置 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8407451B2 (zh) |
EP (1) | EP2115584B1 (zh) |
JP (1) | JP5241737B2 (zh) |
KR (1) | KR101123443B1 (zh) |
CN (1) | CN101606130B (zh) |
TW (1) | TWI417792B (zh) |
WO (1) | WO2008095844A1 (zh) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8046524B2 (en) * | 2007-08-08 | 2011-10-25 | Sandisk Technologies Inc. | Managing processing delays in an isochronous system |
US8102865B2 (en) * | 2008-05-16 | 2012-01-24 | Microsoft Corporation | Group based allocation of network bandwidth |
US10802990B2 (en) * | 2008-10-06 | 2020-10-13 | International Business Machines Corporation | Hardware based mandatory access control |
US8838796B2 (en) * | 2008-12-19 | 2014-09-16 | Adobe Systems Incorporated | System and method for allocating online storage to computer users |
WO2011130406A1 (en) * | 2010-04-13 | 2011-10-20 | Et International, Inc. | Runspace method, system and apparatus |
GB2481232A (en) * | 2010-06-16 | 2011-12-21 | Advanced Risc Mach Ltd | Cache for a multiprocessor system which can treat a local access operation as a shared access operation |
US9134771B2 (en) * | 2010-08-06 | 2015-09-15 | Dhk Storage, Llc | Raid devices, systems, and methods |
RU2013125719A (ru) | 2010-12-16 | 2015-01-27 | Ити Интернэшнл, Инк. | Архитектура распределенных вычислений |
US8918791B1 (en) | 2011-03-10 | 2014-12-23 | Applied Micro Circuits Corporation | Method and system for queuing a request by a processor to access a shared resource and granting access in accordance with an embedded lock ID |
TWI550408B (zh) * | 2011-04-22 | 2016-09-21 | 晨星半導體股份有限公司 | 多核心電子系統及其速率調節裝置 |
KR101867960B1 (ko) | 2012-01-05 | 2018-06-18 | 삼성전자주식회사 | 매니 코어 시스템을 위한 운영체제 동적 재구성 장치 및 방법 |
WO2014000779A1 (en) * | 2012-06-27 | 2014-01-03 | Qatar Foundation | An arrangement configured to allocate resources of a plurality of data storage media to a plurality virtual machines and associated method |
CN105247825A (zh) * | 2013-06-29 | 2016-01-13 | 英特尔公司 | 基于信用的仲裁的服务率重新分配 |
US9026681B2 (en) | 2013-08-08 | 2015-05-05 | Qualcomm Incorporated | Flexible hardware module assignment for enhanced performance |
US10394731B2 (en) | 2014-12-19 | 2019-08-27 | Amazon Technologies, Inc. | System on a chip comprising reconfigurable resources for multiple compute sub-systems |
US10523585B2 (en) | 2014-12-19 | 2019-12-31 | Amazon Technologies, Inc. | System on a chip comprising multiple compute sub-systems |
US11200192B2 (en) | 2015-02-13 | 2021-12-14 | Amazon Technologies. lac. | Multi-mode system on a chip |
US10853077B2 (en) * | 2015-08-26 | 2020-12-01 | Huawei Technologies Co., Ltd. | Handling Instruction Data and Shared resources in a Processor Having an Architecture Including a Pre-Execution Pipeline and a Resource and a Resource Tracker Circuit Based on Credit Availability |
US11221853B2 (en) | 2015-08-26 | 2022-01-11 | Huawei Technologies Co., Ltd. | Method of dispatching instruction data when a number of available resource credits meets a resource requirement |
CN105183565B (zh) * | 2015-09-30 | 2018-12-07 | 华为技术有限公司 | 计算机、服务质量控制方法及装置 |
US10628373B2 (en) * | 2015-12-01 | 2020-04-21 | Marvell International Ltd. | Systems and methods for transmitting an access request via a flexible register access bus |
CN107067240B (zh) | 2016-12-12 | 2020-09-08 | 创新先进技术有限公司 | 资源调配方法和装置以及电子支付方法 |
US10649678B2 (en) * | 2017-01-13 | 2020-05-12 | Arm Limited | Partitioning of memory system resources or performance monitoring |
US10394454B2 (en) * | 2017-01-13 | 2019-08-27 | Arm Limited | Partitioning of memory system resources or performance monitoring |
US10268379B2 (en) * | 2017-01-13 | 2019-04-23 | Arm Limited | Partitioning of memory system resources or performance monitoring |
CN107800644A (zh) * | 2017-11-08 | 2018-03-13 | 中国人民解放军国防科技大学 | 一种可动态配置的流水化令牌桶限速方法与装置 |
TWI681362B (zh) * | 2018-03-01 | 2020-01-01 | 瑞昱半導體股份有限公司 | 有限記憶體頻寬系統及其動態限制圖形處理器的記憶體頻寬的方法 |
CN111708622B (zh) * | 2020-05-28 | 2022-06-10 | 山东云海国创云计算装备产业创新中心有限公司 | 一种指令组调度方法、架构、设备及存储介质 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2685484B2 (ja) * | 1988-04-13 | 1997-12-03 | 株式会社日立製作所 | 記憶制御方式 |
US5600805A (en) * | 1992-06-15 | 1997-02-04 | International Business Machines Corporation | Pass-through for I/O channel subsystem call instructions for accessing shared resources in a computer system having a plurality of operating systems |
JPH06332701A (ja) * | 1993-05-26 | 1994-12-02 | Hitachi Ltd | 情報処理装置 |
US6801995B1 (en) * | 1998-08-04 | 2004-10-05 | Agere Systems, Inc. | Method for optimally encoding a set of instruction codes for a digital processor having a plurality of instruction selectable resource types and an associated optimized set of instruction codes |
US6631462B1 (en) * | 2000-01-05 | 2003-10-07 | Intel Corporation | Memory shared between processing threads |
US6820142B2 (en) * | 2000-12-14 | 2004-11-16 | International Business Machines Corporation | Token based DMA |
US6643747B2 (en) * | 2000-12-27 | 2003-11-04 | Intel Corporation | Processing requests to efficiently access a limited bandwidth storage area |
US6567897B2 (en) * | 2001-03-01 | 2003-05-20 | International Business Machines Corporation | Virtualized NVRAM access methods to provide NVRAM CHRP regions for logical partitions through hypervisor system calls |
GB2392742B (en) * | 2002-09-04 | 2005-10-19 | Advanced Risc Mach Ltd | Synchronisation between pipelines in a data processing apparatus |
US7530068B2 (en) * | 2003-12-17 | 2009-05-05 | International Business Machines Corporation | Method of resource allocation using an access control mechanism |
US6996647B2 (en) * | 2003-12-17 | 2006-02-07 | International Business Machines Corporation | Token swapping for hot spot management |
US20060015772A1 (en) * | 2004-07-16 | 2006-01-19 | Ang Boon S | Reconfigurable memory system |
US7386687B2 (en) * | 2005-01-07 | 2008-06-10 | Sony Computer Entertainment Inc. | Methods and apparatus for managing a shared memory in a multi-processor system |
US20060259733A1 (en) * | 2005-05-13 | 2006-11-16 | Sony Computer Entertainment Inc. | Methods and apparatus for resource management in a logically partitioned processing environment |
US7412353B2 (en) * | 2005-09-28 | 2008-08-12 | Intel Corporation | Reliable computing with a many-core processor |
-
2007
- 2007-02-06 US US11/671,508 patent/US8407451B2/en not_active Expired - Fee Related
-
2008
- 2008-01-30 JP JP2009547682A patent/JP5241737B2/ja not_active Expired - Fee Related
- 2008-01-30 WO PCT/EP2008/051122 patent/WO2008095844A1/en active Application Filing
- 2008-01-30 CN CN200880004207.9A patent/CN101606130B/zh not_active Expired - Fee Related
- 2008-01-30 KR KR1020097012333A patent/KR101123443B1/ko not_active IP Right Cessation
- 2008-01-30 EP EP08708437.2A patent/EP2115584B1/en active Active
- 2008-02-05 TW TW097104614A patent/TWI417792B/zh not_active IP Right Cessation
Non-Patent Citations (2)
Title |
---|
Cell Broadband Engine processor DMA engines, Part 1: The little engines that move data;Vaidyanathan Srinivasan et al;《http://www.ibm.com/developerworks/power/library/pa-celldmas/》;20051206;图1-4及其文字描述部分,listing 1 * |
Vaidyanathan Srinivasan et al.Cell Broadband Engine processor DMA engines, Part 1: The little engines that move data.《http://www.ibm.com/developerworks/power/library/pa-celldmas/》.2005,图1-4及其文字描述部分,listing 1. |
Also Published As
Publication number | Publication date |
---|---|
US20080189522A1 (en) | 2008-08-07 |
TWI417792B (zh) | 2013-12-01 |
KR20090115115A (ko) | 2009-11-04 |
CN101606130A (zh) | 2009-12-16 |
US8407451B2 (en) | 2013-03-26 |
KR101123443B1 (ko) | 2012-06-12 |
TW200901040A (en) | 2009-01-01 |
EP2115584A1 (en) | 2009-11-11 |
WO2008095844A1 (en) | 2008-08-14 |
JP5241737B2 (ja) | 2013-07-17 |
EP2115584B1 (en) | 2016-01-27 |
JP2010518472A (ja) | 2010-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101606130B (zh) | 在处理器***的指令级使能资源分配标识的方法和装置 | |
US9864681B2 (en) | Dynamic multithreaded cache allocation | |
CN102483719B (zh) | 基于块的非透明高速缓存 | |
CN101351773B (zh) | 基于存储器访问数据结构执行直接高速缓存访问事务 | |
CN100573477C (zh) | 管理锁定的高速缓冲存储器中的组替换的***和方法 | |
US8041920B2 (en) | Partitioning memory mapped device configuration space | |
CN100399300C (zh) | 用于数据处理的***和方法和用于分配资源的***和方法 | |
CN1786927B (zh) | 应用层高速缓存映像知晓和再分配的***和方法 | |
US20120079241A1 (en) | Instruction execution based on outstanding load operations | |
CN102985910A (zh) | 对无用存储单元收集的gpu支持 | |
CN103777925A (zh) | 多线程处理单元中的高效存储器虚拟化 | |
US20050066108A1 (en) | Managing peripheral device address space resources using a tunable bin-packing/knapsack algorithm | |
CN103425533A (zh) | 用于管理嵌套执行流的方法和*** | |
CN104854568A (zh) | 用于更新远程处理节点中的地址转换数据结构的转换管理指令 | |
CN103226481A (zh) | 自动从属任务启动 | |
CN103885893A (zh) | 用于访问内容寻址存储器的技术 | |
CN103034524A (zh) | 半虚拟化的虚拟gpu | |
CN103294753A (zh) | 无锁先入先出 | |
CN103294536A (zh) | 控制用于处理任务的工作分布 | |
JP2006134324A (ja) | ロッキング・キャッシュを用いる直接的保存 | |
CN103870309A (zh) | 用于集群多级寄存器堆的寄存器分配 | |
CN103885902A (zh) | 用于经由纹理硬件实施存储器访问操作的技术 | |
CN100594481C (zh) | 允许运行在逻辑分区上的程序访问资源的方法与*** | |
CN103425534A (zh) | 在许多应用之间共享的图形处理单元 | |
CN107771322A (zh) | 可编程集成电路中存储器资源的管理 |
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 |
Granted publication date: 20140507 Termination date: 20190130 |
|
CF01 | Termination of patent right due to non-payment of annual fee |