CN1514349A - 意图进行存储的预取机制 - Google Patents
意图进行存储的预取机制 Download PDFInfo
- Publication number
- CN1514349A CN1514349A CNA03158568XA CN03158568A CN1514349A CN 1514349 A CN1514349 A CN 1514349A CN A03158568X A CNA03158568X A CN A03158568XA CN 03158568 A CN03158568 A CN 03158568A CN 1514349 A CN1514349 A CN 1514349A
- Authority
- CN
- China
- Prior art keywords
- cache line
- instruction
- order
- microprocessor
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000007246 mechanism Effects 0.000 title description 2
- 230000015654 memory Effects 0.000 claims abstract description 67
- 238000013519 translation Methods 0.000 claims abstract description 17
- 238000000034 method Methods 0.000 claims description 60
- 230000004044 response Effects 0.000 claims description 23
- 238000012546 transfer Methods 0.000 claims description 17
- 238000012986 modification Methods 0.000 claims description 11
- 230000004048 modification Effects 0.000 claims description 11
- 238000000605 extraction Methods 0.000 claims description 10
- 239000000284 extract Substances 0.000 claims description 5
- 230000009471 action Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 description 40
- 238000005516 engineering process Methods 0.000 description 9
- 238000000429 assembly Methods 0.000 description 8
- 230000000712 assembly Effects 0.000 description 8
- 230000008859 change Effects 0.000 description 5
- 238000007689 inspection Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000013277 forecasting method Methods 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 239000000872 buffer Substances 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 238000005755 formation reaction Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000019771 cognition Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004377 microelectronic Methods 0.000 description 1
- 230000008450 motivation Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000001052 transient effect Effects 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- 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/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
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)
- Advance Control (AREA)
Abstract
本发明公开了一种对内存内一高速缓存管线执行独占预取的微处理器装置。该装置包含转译逻辑与执行逻辑。该转译逻辑将一扩展预取指令转译成一微指令序列,用以命令微处理器预取处于独占状态的一高速缓存管线。该执行逻辑连接至该转译逻辑。该执行逻辑接收该微指令序列,然后由一内存总线发出操作,用以请求处于该独占状态的高速缓存管线。本发明还公开了一种预取处于一独占状态的一高速缓存管线的方法。
Description
技术领域
本发明涉及微电子学的领域,尤其指一种装置及方法使程序员得以命令微处理器预取一处于独占(exclusive)MESI(修改,独占,共享,无效)状态的高速缓存管线(cache line)至其内部高速缓存(internal cache)。
背景技术
如今的微处理器,其内部逻辑区段(logic block)间的数据传输速度远超过其与外部内存的存取速度。在一个x86桌上型计算机配置中,其总线(bus)与系统内存之间的接口运行速率是以兆赫(megahertz)的百倍计,但是其内部微处理器时钟速率却已接近千兆赫(gigahertz)。因此,近年来已发展出一个高速缓存结构的层级体,此体使得高效能微处理器不必在每次读取(read)或写入(write)数据时,必须在一个缓慢的内存总线(memory bus)上执行操作(transaction),而更能发挥其效能。
一个机载(on-board),或区域(local),高速缓存在一个管线化(pipeline)微处理器中是一个独立的单位,在本质上,其运行方式对于在管线化微处理器中指令流而言是透明(transparent)的,此方式确保一个应用程序(applicationprogram)中的指令所需要的数据已经常驻在其高速缓存内,而可以用管线速率存取,而不是以内存总线速率。不同的技术使用不同的高速缓存架构,有些由多层(multiple levels)高速缓存所组成:第一层高速缓存非常接近处理器的执行逻辑(execution logic),第二层高速缓存可以是芯片上(on-chip)或非芯片上,用来存储较不常存取的数据,第三层高速缓存则可能是在存储卡(memory card)上,以此类推。不论应用哪一种架构,熟悉此领域技术人员将发现使用高速缓存的目的在于排除当总线操作由一个缓慢的内存总线所发出时的微处理器管线中指令的停滞(stalled),此总线操作为了取得一待决的(pending)读取或写入运算所需的数据。当此状况发生,程序的执行将产生令人难以忍受的中断(halt),直到得到所需数据为止。
如今计算机系统组件间共享内存区域的现象使得情况更为复杂。举例说,主微处理器与通讯微处理器之间的通讯是由在一指定内存区域上的读取及写入数据。视频组件(video device)上显示数据给操作员的视频卡的微处理器与主微处理器共享一些称为视频缓冲器(video buffers)的内存区域,也是很常见的情况。
在共享内存系统中,可能发生来自一个共享区域的数据存在于两个不同微处理器的区域高速缓存中,或是存在于连接到同一个内存总线的不同组件上。若所有组件只是单纯的读取数据,则允许它们将数据常驻于其区域高速缓存结构,并不会造成任何伤害。但是当它们均被允许改动(modify)存在于其区域高速缓存的数据时,即会造成不可预期的后果。
为防止此情况发生,系统设计者开发了高速缓存一致性协议以标示高速缓存中数据的状态。MESI是最普遍使用的协议。依照MESI来维护区域高速缓存可以确保同一数据的两个副本不会在同一时间被改动。MESI共享状态告知区域高速缓存一特定区段的数据是否为共享(shared)。如是共享,则区域处理器在由一较慢的内存总线上执行操作以取得独占许可(exclusivepermission)之前,不得改动数据。若要改动数据,处理器需先取得数据的独占所有权。
本发明在此强调的问题是关于要将数据写入内存时所导致的发生在程序内的延迟。熟悉此领域技术人员将发现高速缓存并无合理的方法以得知何时一特定内存区域会最先被需要,因此当该特定内存区域第一次被加载到区域高速缓存时,总是会引起内存总线延迟。所以,设计者开发了一可在微处理器上执行的预取指令。但是预取指令并不能在程序流程的操作数上运行。确切的说,预取指令命令区域高速缓存从内存上加载操作数到该高速缓存以备用。而且因为高速缓存单元与内存间的运行方式,对一微处理器管线内的指令流程而言,是透明的,因此稳妥的方式是在需用数据之前先发出预取指令,使得高速缓存可以在需用数据之前,从内存提取数据与在主程序流程中其它指令的执行平行处理。然后当随后的指令(subsequence instruction)出现,并且需要存取已预取的数据时,此数据已经在高速缓存中立即可存取,所以程序的执行不会因为等待从内存提取数据而停滞。已预取的数据在高速缓存中立即可存取仅指其将要被读取而已。如果此预取的数据会被随后的指令所改动,则程序的执行将必须延迟以等待高速缓存单元到总线去请求共享数据的独占所有权,而后区域处理器才可改动此数据。
因此,需要一种装置及方法使得程序员得以命令微处理器执行预取数据,此数据处于不需求助于总线操作以取得数据的独占所有权,而可被随后的运算所改动的状态。
发明内容
为克服上述及其它公知技术的问题与缺点,本发明提供一种更好的技术以预取一高速缓存数据,其状态为使得一随后的存储运算可立刻被公布,而不会发生为取得该高速缓存数据的独占所有权所导致的内存总线延迟。在一具体实施例中,提供一可从内存独占的预取一高速缓存管线的微处理器装置。该装置包括转译逻辑与执行逻辑。转译逻辑将一扩展(extended)预取指令转译成一微指令序列,此微指令序列用以命令微处理器预取一处于独占状态的的高速缓存管线。执行逻辑连接至转译逻辑。该执行逻辑接收前述微指令。序列,然后由内存总线发出操作,请求该处于独占状态的高速缓存管线。
本发明的主要目的,在于提供一种微处理器以执行一意图进行存储运算的预取。该微处理器拥有一扩展预取指令,该指令被配置成命令该微处理器预取一处于独占状态的的高速缓存管线。该微处理器也包含一转译器,该转译器则是被配置成接收该扩展预取指令,并将此扩展预取指令转译成相关的微指令。此相关的微指令命令在微处理器内的执行逻辑由一内存总线发出一总线操作,以请求此高速缓存管线的独占所有权。
本发明的另一目的,在于提供一种预取一处于独占状态的的高速缓存管线的方法。此方法包括提取(retrieving)一扩展预取宏指令;转译该扩展预取宏指令成一微指令序列,此微指令序列用以命令一微处理器预取该处于独占状态的高速缓存管线;而且,响应此微指令序列,由内存总线发出总线操作以读取该处于独占状态的高速缓存管线。
为了更好地理解本发明的目的、特征及优点,下面结合附图进一步说明本发明的具体实施例。
附图说明
图1是现有技术中微处理器的有效管线化阶段(stages)的方框图;
图2是一方框图,其描述在如图1所述的微处理器内执行一预取运算的一接口至内存的高速缓存单元;
图3A、3B是一时序图,其说明由如图1及图2所述的微处理器所发出,由内存总线执行的预取运算的两种可能操作集;
图4是本发明的扩展预取指令的方框图;
图5是一表格,其说明如何将如图4所示的扩展预取指令的扩展地址定位字段,用以命令微处理器执行预取一处于独占MESI状态的高速缓存管线;
图6是一方框图,其详述本发明执行意图进行存储运算的预取的一种微处理器;
图7是一方框图,其描述在如图6所述的微处理器内执行一意图进行存储运算的预取的一接口至内存的高速缓存单元;
图8是一时序图,其说明本发明由如图6及图7所述的微处理器所发出,由内存总线以执行意图进行存储运算预取的总线操作;
图9是本发明的扩展区段预取指令的方框图;
图10是一方框图,其描述在如图6所述的微处理器内执行一区段预取及存储运算的一接口至内存的高速缓存单元;
图11是一时序图,为说明本发明由如图6及图10所述的微处理器所发出,由内存总线来执行一区段预取及存储运算的总线操作;
图12是本发明用以执行意图进行存储运算的预取方法流程图;
图13是本发明用以执行意图进行存储运算的区段预取方法流程图。
图中:
100管线化微处理器 101提取阶段
102转译阶段 103暂存阶段
104寻址阶段 105执行阶段
106执行逻辑 107数据高速缓存
108内存 109高速缓存总线
110内存总线 120程序流程
121~123宏指令
200高速缓存单元接口 201微处理器
202宏指令 210转译器
211微指令 220高速缓存单元
221记录逻辑 222数据高速缓存
223停滞信号 230总线单元
240系统内存总线 241总线组件
301~302操作指令集 303~304总线操作
400扩展预取指令 401前置码
402预取运算码 403扩展地址指定元
600微处理器 601提取逻辑
602指令高速缓存 603指令内存
604指令队列 606转译逻辑
607扩展转译逻辑 608微指令队列
609执行逻辑 610扩展高速缓存单元
611数据高速缓存 612扩展记录逻辑
613总线单元 614数据存储器
615内存总线
700方框图 701微处理器
702宏指令 710扩展转译器
711微指令 720扩展高速缓存单元
721扩展记录逻辑 722数据高速缓存
723停滞信号 730总线单元
740总线 741总线组件
800时序图 801~802总线操作
900扩展区段预取指令 901前置码
902预取运算码 903扩展地址指定元
1000方框图 1001微处理器
1002宏指令 1010扩展转译器
1011微指令序列 1012架构寄存器
1013映像计数寄存器 1020扩展高速缓存单元
1021扩展区段记录逻辑 1022数据高速缓存
1023停滞信号 1030总线单元
1040内存总线 1041总线组件
1042数据存储器 1100时序图
1101~1102总线操作
1200~1220意图进行存储运算的预取的方法的流程
具体实施方式
前文已针对现有的管线化微处理器如何执行预取运算,作了背景的讨论,有鉴于此,在图1至3,将呈现一强调现有预取技术的限制的例子。紧接着,在图4至13,将呈现本发明的讨论。本发明使得程序员得以命令微处理器预取处于独占MESI状态的数据至其高速缓存,因此,得以避免因为一随后的储存运算执行该数据的修改(modify)所造成的任何程序延迟。
如图1,一方框图用以说明当今管线化微处理器100内的重要管线阶段101-105。此微处理器有一个提取阶段101,一个转译阶段102,一个暂存阶段103,一个寻址阶段104及一个执行阶段105。
在运行时,该提取阶段101从系统内存的一指令范围120中提取宏指令121-123以供微处理器100执行。该宏指令121-123接着被送至转译阶段102。该转译阶段102将宏指令121-123转译成对应的微指令(或称原生指令)序列(未显示),此微指令序列命令微处理器100执行宏指令121-123指定的运算。非常类似于工厂产品在装配在流水线站的方式,该微指令也同步于管线时钟信号(未显示)的流经在管线中随后的阶段103-105。根据前述方式,微指令被送至暂存阶段103。如果有一特定微指令指定一操作数被存储在暂存阶段103的寄存器内,则逻辑在那一点上可存取该寄存器以提取该操作数,并且将之随同该特定微指令一起送至寻址阶段104。寻址阶段104包含用以产生地址以存取存储在数据存储器108内的操作数的逻辑。相似于暂存阶段103,该寻址阶段104也将所产生的地址,随着相应的微指令,传送至执行阶段105。
执行阶段105执行该微指令所指定的运算。在当今的微处理器100,运算的型式是由指令集架构所决定,但是熟悉此项技术的人将发现这些运算不会超出一般的计算范畴,例如逻辑运算,算术运算,及内存存取运算(换言之,数据读取与数据写入运算)。由执行指定的运算所产生的结果,若不是存储在暂存阶段103的寄存器内,即是被写入到数据存储器108内的存储位置。
熟悉此项技术的人将发现当今的管线化微处理器100也许会有比图1中101-105更多的阶段,因为,由分解管线中的主函数以增加管线中阶段的数目是种经证实可增加管线中指令121-123的产出量的技术。为了简明起见,如图1所示的当今微处理器100的管线化阶段101-105已经足以说明现有技术的缺点。
值得注意的是在现有的微处理器100中,其执行阶段105除了有一数据高速缓存107之外,还有执行逻辑106。该数据高速缓存107的运行与在管线化阶段101-105中指令的执行平行,此运行方式确保那些有很大可能性被一应用程序指令121-123所存取的数据已经存在于高速缓存107,因此当数据存取微指令(换言之,加载内存或存储内存微指令)进行到执行阶段105时,该执行逻辑106能够在一或两个管线时钟周期之内执行该数据的存取,而不是造成可能数以百计的时钟周期的程序延迟,只因为等待由内存总线110到数据存储器108以执行该数据的存取。在一有效率的高速缓存系统配置中,数据的加载与存储绝大部份发生在由高速缓存总线109的执行逻辑106与数据高速缓存107之间,并且数据高速缓存107的运行方式是相对的透明于流经管线化阶段102-105的微指令流程,此运行方式确保数据实体的快取副本与系统内存108是同步且一致的。
MESI(修改,独占,共享,无效)(modified,exclusive,shared,invalid)是个普遍使用的协议,此协议用以在一系统配置的内存108的共享区域内确保其高速缓存项目的一致性。虽然并未在图1中描述,但是为了使用同一数据运算的目的,在一计算机系统配置中的其它组件(未显示)是可以共享内存108的一些区域。举例说,视频卡可以与微处理器100共享内存108的一个区域,以便在存取微处理器100所产生的监视器显示数据。另一例子则是在系统总线110上的多重组件可以由从数据存储器108中的共享区域的数据读取及数据写入来彼此联络。架构性研究的详细叙述以提供使用MESI协议的动机并不在本发明的应用领域,此处只需了解MESI在确定系统内存108与区域(local)高速缓存结构107之间数据的一致性的普遍应用。
因为由内存总线110的操作需要数以百计的时钟周期才能完成,所以数据被以包含数个字节的区段形态在数据高速缓存107中移进及移出。这些区段称为高速缓存管线。虽然高速缓存管线行宽(换言之,高速缓存管线的字节大小)会因不同的架构而改变,现在的系统架构非常常见的有32-字节行,或64-字节行,或甚至128-字节行。
即使是最有效率的高速缓存结构107也会发生延迟,在从内存108,由内存总线110,到高速缓存107的进行数据转移,不可避免的会有所延迟。但是在提供一高速缓存管线给高速缓存107之后,其随后的对该高速缓存管线内的数据实体的存取即不会发生重大的延迟,因为高速缓存107及其高速缓存总线109的速度是与微处理器100内其它逻辑的速度(例如执行逻辑106)相近的。
依照MESI协议,在区域数据高速缓存107内的高速缓存管线可处于下述任意一状态:修改,独占,共享及无效。一修改状态的高速缓存管线指在该高速缓存在线执行一区域存储运算后,但是尚未与主存储器108同步化的高速缓存管线。监测来自其它组件(也称为总线组件)的由其内存总线110的内存操作是区域高速缓存107的责任,因此如果总线组件从一修改状态的高速缓存管线请求数据,则区域高速缓存107会将该修改过的数据送至该请求数据的总线组件。此种对总线110的监测称为总线窥视模式(bus snooping)。一独占状态的高速缓存管线指其区域高速缓存107可以在该高速缓存在线执行存储运算的高速缓存管线。独占状态暗示其区域高速缓存107拥有对该高速缓存管线的独占所有权;微处理器100因此被许可修改其内容。一共享状态的高速缓存管线指存在于两个或数个在总线110上组件的区域高速缓存107内的高速缓存管线。因此,任意一组件均可从共享的高速缓存管线读取数据,但均不被许可去修改其内容。为能在共享的高速缓存在线修改数据(换言之,执行存储运算),在修改其内容之前,组件100需先由内存总线110实施适当的操作以取得该高速缓存管线的独占所有权(换言之,读取处于独占MESI状态的高速缓存管线到其区域高速缓存107)。一旦取得该高速缓存管线的独占所有权,即可执行存储运算,并且将该高速缓存管线状态变更为修改状态。在公布存储运算之前,首先请求高速缓存管线的独占所有权可以保证数据的一致性,因为在任意一时间点,均只有一个组件100可以修改其高速缓存管线的内容。当区域高速缓存107检测到(由窥视模式)由内存总线110至其高速缓存管线的写入操作,或是当另一组件由内存总线110发出总线操作以取得该高速缓存管线的独占所有权时,该高速缓存管线状态即变更为无效状态。将一高速缓存管线标示为无效表示其内的数据与内存108不一致而无法被读取或写入。
因为一高速缓存107的运行与微处理器管线中的指令流程平行,在程序流程120中,设计者需在数据的存取被请求之前,先提供预取宏指令122加载该数据到一高速缓存107,因此可以克服数据必须起始的从内存108提取至高速缓存107所导致的延迟的缺点。在程序流程120中通常有一预取指令122命令其区域高速缓存107从内存108加载一高速缓存管线,而此预取指令122与随后指令的执行是平行的,因此当程序流程120的指令123要从该高速缓存管线存取数据的时候,该高速缓存管线已经存储在其高速缓存107中。在图1的例子中,一预取指令122,PREFETCHTO[EAX],命令由寄存器EAX的内容所定位的高速缓存管线被加载到高速缓存107,使得其内容可被随后的数据存取指令123,MOV EBX,[EAX],在数据流120中被执行时所使用,此数据存取指令123命令微处理器100从由寄存器EAX指定的地址读取数据,并且将其移至寄存器EBX。因为x86指令已被广泛的认知,传统的前述数据流120内的预取指令122及数据存取指令123的描述是根据x86的指令集架构。但是熟悉此项技术人将发现,在许多其它的指令集架构也提供预取指令122以命令微处理器100从内存108读取一高速缓存管线至一区域高速缓存107,使得随后的指令123从该高速缓存管线执行一指定的数据读取运算不会发生延迟。如果预取指令是很明智的置于数据流120内,则可以有效率的克服因为在高速缓存107的起始存取数据所造成的延迟,因此显著的改进程序的执行速度。当完成预取运算的一由内存总线110的操作后,其所请求的高速缓存管线不是独占状态(若是该区域高速缓存107拥有该高速缓存管线的唯一高速缓存副本时),即是以共存状态(若是其它组件也拥有该高速缓存管线的高速缓存副本时)存在于高速缓存107内。不论其在那一状态,在该高速缓存管线内的数据实体是可被立即读取存取的。但是如前述所指明,为将数据写入到一高速缓存管线(换言之,执行一存储运算),需要拥有该高速缓存管线的独占所有权。因此,如果该预取运算导致高速缓存管线处于独占状态,则一待决存储即可立刻对此高速缓存管线公布。但是若该来自总线110的高速缓存管线是共享状态,则一待决的存储必须被暂停,以等待该高速缓存单元107由总线110发出操作以取得该高速缓存管线的独占所有权。在该高速缓存管线在独占状态下被送至高速缓存107之后,则该待决的存储即可被公布。
图2为一方框图200,用以描述在图1的微处理器内执行预取运算的一接口至内存的高速缓存单元。该方框图200显示在微处理器201内被应用为执行预取运算的逻辑。该微处理器201内有一转译器210以接受一宏指令流程202并将其转译成对应的微指令211。用以命令对内存242作数据加载及存储运算的微指令211随后即被送到一高速缓存单元220。该高速缓存单元220包括记录逻辑221及一数据高速缓存222。该记录逻辑221连接至一总线单元230。该总线单元230连接到一系统内存总线240,该系统内存总线并且与系统内存242及其它总线组件241连接。
宏指令的示范流程202说明如何指定一预取运算及如何可在此预取的数据上执行随后的读取与存储运算。一关于此运算序列在桌上型计算机上的常见实例是内存内计数器的读取及增加。一序列的预取,读取,及存储运算需要既可以在高速缓存管线内读取数据,也可以在高速缓存管线内修改数据。因此,示范流程的第一个宏指令202,PREFETCH[EAX],命令微处理器201去预取一地址对应于寄存器EAX内容的高速缓存管线。第二个宏指令202,MOV EBX,[EAX],命令微处理器201去读取一地址为寄存器EAX所指定的内存位置的内容,并将该内容写入寄存器EBX。第三个宏指令202,INC EBX,命令微处理器201增加寄存器EBX的内容。第四个宏指令202,MOV[EAX],EBX,命令微处理器201在对应于寄存器EAX内容的内存位置上存储该寄存器EBX的内容。上述详细的预取,读取,及存储运算仅仅是增加一个数值到地址由寄存器EAX所指定的内存。值得注意的是为了要有效率的利用该预取指令202,必须在第二个宏指令202,MOV EBX,[EAX]之前提供充分的该预取指令202,使得因为加载由EAX的内容所指定的高速缓存管线所造成的延迟,可以被中介的宏指令202的平行执行所吸收。但是,为了简明起见,该中介的宏指令202并未在方框图200中叙述。
转译器210将该预取宏指令202转译成一对应的预取微指令211,PREFETCH[EAX],然后送到高速缓存单元220。记录逻辑221询问数据高速缓存222以决定所请求的高速缓存管线是否已存在并且有效(换言之,即非处于无效状态)在数据高速缓存222内。若答案为否,则该记录逻辑221命令其总线单元230,由系统内存总线240,发出一操作请求以从内存242取得所请求的高速缓存管线。若其它的总线组件241均无该被请求的高速缓存管线的副本时,则该记录逻辑221将被请求的高速缓存管线以独占状态送到数据高速缓存222。若一或数个总线组件241拥有该被请求的高速缓存管线的区域副本时,则该记录逻辑221即将该高速缓存管线以共享状态写入到数据高速缓存222。在前述任意一状态,该被请求的高速缓存管线均存储在高速缓存222内以备随后的存取运算使用。
转译器210将第二个宏指令202转译成一加载微指令211,LDEBX,[EAX],命令微处理器加载地址为寄存器EAX所指定的内存的内容到寄存器EBX。如图1所述的,微处理器内的执行逻辑(未显示)从高速缓存单元220请求该内存地址的内容。因为该高速缓存管线所有的内容,由于预取运算的结果已经存在于该数据高速缓存222中,所以是立即可用并且加载微指令211的执行不会有任何延迟。
第三个宏指令202被转译成一对应的增加微指令211,INC EBX,此指令命令执行逻辑将寄存器EBX的内容增加。因为不需要新的数据,所以该加载微指令211不会被送到高速缓存单元220。
最后,在流程中的第四个宏指令202被转译成一存储微指令211,ST[EAX],EBX,此指令命令执行逻辑去执行一数据存储运算,以将寄存器EBX的内容写入到地址由寄存器EAX内容所指定的内存位置。该存储微指令211从而以待决的存储运算形式被送到其高速缓存单元220。于是,记录逻辑221检测到以待决的存储运算为目标的高速缓存管线存在于该数据高速缓存222。若该高速缓存管线是处于独占状态,则此待决的存储可立刻被公布并将该高速缓存管线的状态变更为修改状态。另一方面,若该高速缓存管线是处于共享状态,则该高速缓存单元220确定一停滞信号223以中断该微指令211在微处理器201的管线阶段中的进行,同时该记录逻辑221则命令其总线单元230,由其内存总线240,执行操作以取得该高速缓存管线的独占所有权。一旦取得独占所有权,则可准许待决的存储对该高速缓存管线公布其数据,并且终止停滞信号,从而继续程序的执行。
现在考虑一种运算形式只是单纯的写入数据到内存中而不需先读取数据,或是一种运算形式是会先读取数据,但是此形式确定预期有一存储运算会随后被公布。在这些案例中,只有对那些必须先读取数据的情况执行的预取指令才可以将程序延迟减到最小。并且在这种案例中,若预取的结果使所请求的高速缓存管线处于独占状态,则可排除因存储运算所导致的程序延迟。但是若预取的结果使所请求的高速缓存管线处于共享状态,则因存储运算所导致的程序延迟将不可避免。这是个问题,因为当今的指令集架构并未提供一方法以命令微处理器201去独占的预取一高速缓存管线到数据高速缓存222。虽然响应一预取运算的高速缓存管线可以是独占的,但是此状态并不能保证。这是因为预取宏指令架构化的推定其预取的数据是会被读取,并且其结果的由系统总线的操作请求该高速缓存管线被提取,不论其是否处于共享状态。举例来说,在x86架构中,一x86预取指令的执行结果的由总线240发出的操作是一数据读取运算。该数据读取运算请求一高速缓存管线的副本,并不管其是处于何种状态。
图3A、3B显示一时序图,用以描述由图1及图2所示的微处理器201所发出的两个可能的总线操作集301,302,此总线操作由内存总线240发出以执行一预取与随后的存储运算。此两操作集301,302包括在微处理器201内的从总线单元230到内存总线240的请求操作303,与同样在微处理器201内从内存总线240回到总线单元230的响应操作304。操作集301描述那些当回应一预取运算的高速缓存管线是独占状态时所执行的操作303-304。操作集302描述那些当回应一预取运算的高速缓存管线是共享状态时所执行的操作303-304。如同图2所述,当执行一预取指令时,记录逻辑221命令其总线单元230对其内存总线240发出一数据读取请求303,DATA READ[EAX],请求被寄存器EAX所指定的高速缓存管线被送到其区域高速缓存222。该数据读取请求303在操作集301是在时间点A发出,在操作集302则是在时间点D发出。该内存总线240于是响应发出一包括该所请求的高速缓存管线的数据响应请求304回到总线单元230。若该高速缓存管线是在独占状态,则在操作集301的数据响应请求304,DATA RESP[EAX].E,在时间点B被送回到总线单元230。若该高速缓存管线是在共享状态,则在操作集302的数据响应请求304,DATA RESP[EAX].S,在时间点E被送回到总线单元230。在这时,数据可从高速缓存222读取而不会导致总线操作延迟。
当一随后的存储运算面对上述操作提供的高速缓存管线时,操作集302的情形说明为了能公布该存储运算所必然发生的操作303,304。在操作集301中,因为高速缓存管线起始即是独占状态,要公布该存储运算只须在时间点C发出一数据写入操作303,DATA WRITE[EAX],由总线240将数据写入到内存242。但是如操作集302所示,在时间点H的数据写入操作303可以被发出之前,必须先执行时间点F及G的操作303及304,以便能将高速缓存管线的所有权状态由共享提升到独占。在时间点F,总线单元230发出一数据读取与无效请求303,DATA READ/INV[EAX],用以请求该共享状态高速缓存管线的独占所有权。在数百时钟之后的时间点G,从总线240接收到一响应请求304,DATA RESP[EAX].E,以将该高速缓存管线的状态升级到独占状态。在时间点G接收到响应请求304之后,然后在时间点H该数据写入操作303始可对总线240公布。
值得注意的是图3中的操作集301,302以一般性的方式表示,因为不同的微处理器架构应用不同的语义来说明总线操作303,304。除此之外,值得注意为了简明起见,在图3的时序图中已经省略了先取得对数据总线240存取(例如BUS REQUEST,BUS GRANT等等)的所有的操作。
当今的数据预取指令受限于其并不支持确定预期的存储运算,因此无法因为明确意图进行对该高速缓存管线执行一存储运算而有利的预取一高速缓存管线到高速缓存222。一意图进行存储运算的预取,不论该高速缓存管线内容的读取是否先于对该高速缓存管线公布一存储运算。若观察操作集302中的操作303,304,很明显的预取一处于共享状态的高速缓存管线,只有在该高速缓存管线的读取会早于对其公布一存储运算的情况下才有帮助。若是一存储运算将对该共享的高速缓存管线公布,则程序的执行必须被延迟以便将该高速缓存管线的状态从共享提升到独占。
程序员虽然了解当今预取指令的限制,然而仍应用它们为作意图进行存储情况下的预取,因为此预取指令可能(有时而非时常)在响应一数据读取请求时,可取得一高速缓存管线的独占所有权,仅只因为无其它总线组件拥有该请求的高速缓存管线的副本。但是,更理想的情况则是避免预取一处于共享状态的高速缓存管线,而是命令一微处理器201去预取一处于独占状态的高速缓存管线。本发明指向一种装置与方法,用以预取一处于独占MESI状态的一单一高速缓存管线与一多重高速缓存管线,并且随意的初始化该预取的高速缓存管线成一指定数值。本发明现将参照图4至图13进行讨论。
图4为依据本发明以显示一扩展预取指令400的方框图。该扩展预取指令包括一选用的多重前置码实体401,其后为一预取运算码402,其后则为一扩展地址指定元403。在一具体实施例中,每一个前置码及扩展地址实体401,403都是8位大小,而预取运算码实体402则为一或二个字节大小,除非本文中另行修订,所有的实体401-403均与x86的指令集架构一致。
在运行上,该预取运算码402为一指定运算码数值,用以命令一相符的微处理器执行一预取运算。在一x86的具体实施例中,其运算码实体401的指定数值为OF18H。一个或数个选用的前置码实体401可用来命令一相符的微处理器执行某些类型的附加运算,例如由一计数器界定次数的重复运算(例如在x86架构中的REP前置码),迫使执行一原子运算(例如在x86架构中的LOCK前置码)等等。扩展地址指定元403是用以指定该特定类型的预取运算的执行。在一x86的具体实施例中,所熟知的扩展地址指定元403是ModR/M字节403。
依据本发明,当微处理器检测到一预取宏指令400时,依照由扩展地址指定元403内容所指定的指示数值,该微处理器被命令去执行从内存预取数据到高速缓存,其实例将在图五中进行讨论。
图5一表格500,其为图4的扩展预取指令内的扩展地址指定元字段403的一具体实施例,解说依据本发明该扩展地址指定元字段403如何编码以命令微处理器执行预取一处于独占MESI状态的高速缓存管线。为了说明本发明,此处使用符合x86架构的ModR/M位字段,但是,可以预期的是本发明包含任何提供将一预取-独占指示编码到指令400的工具的架构。虽然图5的例子指向将预取-独占(或是意图进行存储的预取)指示编码到一扩展地址指定元403,熟悉此项技术人员将发现该预取指示也可以被编码成一在运算码字段401内的一指定运算码数值。
在此编码实例中,一x86 ModR/M字节用该MModR/M字节的5:3位编码一由预取运算码402所指定形式的预取运算。当今,该x86预取指令使用数值000,001,010,及011以规定意图进行读取运算的预取指示。所有这四个数值000-011为命令一x86微处理器,在不同程度的接近度下,预取数据到其高速缓存。举例来说,一个TO指示(换言之,数值001),命令微处理器预取一高速缓存管线到高速缓存层级体的所有层级,而一NTA指示命令微处理器预取一高速缓存管线到一非暂时性高速缓存结构,并且进入一接近处理器的位置,同时将高速缓存污染减至最低程度。但是x86预取指示000-011编码的普遍特征是一由总线发出的数据读取请求以请求一高速缓存管线的副本,并不会在乎该高速缓存管线是处于何种MESI状态。本发明的一具体实施例将一额外的指示编码进扩展地址指定元中,用以命令微处理器依据本发明利用一独占(.S)指示去预取一指定的高速缓存管线。图5显示一用x86 ModR/M字节的5:3位编码成数值100的预取-独占指示。当该prefetch.s指示依据本发明编码到一预取指令时,则一相符的微处理器会被检测到由一内存总线发出操作以预取处于独占MESI状态的数据。在一x86的具体实施例中,如前述图3B所示,其响应于预取指令400的prefetch.s指示而发出的特定操作是一数据读取与无效操作。在图3B的例子中,该数据读取与无效操作是用以将高速缓存管线从共享状态提升至独占状态。
在x86指令集架构中,将5:3位编码为100,在此之前是被宣告为非法的,就如同表格500中5.3位编码为101-111所示。一非法的ModR/M字节编码造成一异常。但是依据本发明,在一x86的具体实施例中,该改善一预取-独占指示的额外编码是合法的,并且将导致前述的总线操作预取一处于独占状态的高速缓存管线。
众所周知,因为高速缓存结构与内存间的互动是已被从于微处理器管线的指令流程中移除,所以预取指令400只能请求的预取依据所提供的指示来执行。若一高速缓存管线现在并不被内存存取所占用时,则可执行预取运算。但若一高速缓存管线正被占用,则预取运算须被延迟。
如图6为方框图,详述依据本发明的执行一意图进行存储运算的预取的微处理器600。该微处理器600有三个值得注意的阶段范畴:提取,转译,及执行。在提取阶段的提取逻辑601用以从一指令内存603中提取宏指令到一指令高速缓存602。该被提取的宏指令然后由一指令队列604被送到转译阶段。该转译阶段的转译逻辑606连接至一微指令队列608。该转译逻辑606包括扩展转译逻辑607。执行阶段的执行逻辑609包括一扩展高速缓存单元610。该扩展高速缓存单元610有一数据高速缓存611,此数据高速缓存611连接至扩展记录逻辑612。该扩展记录逻辑612连接至一总线单元613。该总线单元613连接至一数据存储器614。
在运行上,提取逻辑601依据本发明从指令内存603中提取格式化的指令到指令高速缓存602,然后将此宏指令依执行顺序送到指令队列604。该宏指令被从指令队列604依序的提取后,被送到转译逻辑606。该转译逻辑606将每一送到此处的宏指令转译成对应的微指令序列,该微指令序列用以命令微处理器600执行由该宏指令所指定的运算。扩展转译逻辑607则依据本发明去检测扩展预取宏指令,并且为将其转译成对应的扩展前置码及地址指定元实体作准备。在一x86的具体实施例中,该扩展转译逻辑607被配置成检测一x86预取指令,并且依据图4及图5所述的常规将该x86预取指令的ModR/M字节转译成一预取微指令序列,该序列用以命令微处理器600去独占的预取一高速缓存管线到数据高速缓存611。
该微指令然后从微指令队列608传送到其执行逻辑609,在该执行逻辑中的扩展高速缓存单元610则依据本发明被配置为执行一独占的预取运算。当该执行逻辑609执行一预取微指令序列时,其扩展记录逻辑612命令总线单元613,由内存总线615,发出操作到内存614请求在独占的MESI状态下预取一指定的高速缓存管线到数据高速缓存611内。
熟悉此项技术人员将发现图6所描述的微处理器600只是一个依据本发明所简化的后的一管线化微处理器600的代表。事实上,如前所述,当今的管线化微处理器包含许多管线阶段。但是这些阶段均可被概括的归纳成如图6方框图所示的三个阶段群组(stage groups),因此图6方框图可视为实现上述本发明的具体化所需的必要成分的说明。为了简明起见,凡微处理器600中无关于本发明的成分均不在此描述。
图7为一方框图700,用以描述在图6的微处理器内执行一预取与存储运算的一接口至内存的高速缓存单元。该方框图700显示在微处理器600内被应用为执行预取运算的逻辑。微处理器701的扩展转译器710接收宏指令流702,并将该宏指令流702转译成对应的微指令711。微指令711在命令对内存742做数据加载与存储运算之后,随后即被送到一扩展高速缓存单元720。该扩展高速缓存单元720包括扩展记录逻辑721及一数据高速缓存722。该扩展记录逻辑721连接至一总线单元730。该总线单元730接口至一统内存总线740,此系统内存总线740又与数据存储器742及其它总线组件741连接。
宏指令的示范流程702说明如何指定一预取指令及如何可在此预取的数据上执行随后的读取与存储运算。如同图2叙述,一有关于此运算序列的桌上型计算机的常见实例是内存内计数器的读取及增加。但是与图1及图2的微处理器201不同的是,当依据本发明的一微处理器701被命令去独占的预取一高速缓存管线时,不论此预取的数据是否会被中介的指令读取,均可有效率的消除会关连到随后的存储运算的总线操作延迟。在图7的宏指令的示范流702中预期一数据读取运算发生早于在预取的数据上执行一存储运算,但是熟悉此项技术人员将发现,没有此一中介的数据读取运算,数据也可以被独占的预取且随后的被写入。
因此,示范流程的一扩展预取指令702,PREFETCH.S[EAX],命令微处理器701去独占的预取其地址对应于寄存器EAX内容的高速缓存管线。第二个宏指令702,MOV EBX,[EAX],命令微处理器701去读取一地址为寄存器EAX所指定的内存位置的内容,并将该内容写入寄存器EBX。第三个宏指令,INC EBX,命令微处理器701增加寄存器EBX的内容。第四个宏指令,MOV EAX,[EBX],命令微处理器701在对应于寄存器EAX内容的内存位置上存储寄存器EBX的内容。值得注意的是为了要有效率的利用独占预取指令702,PREFETCH.S[EAX],必须在第二个宏指令702,MOVEBX,[EAX]之前充分执行独占预取指令702,使得因为加载由EAX的内容所指定的高速缓存管线所造成的延迟,可以被中介的宏指令702的平行执行所吸收。但是,为了简明起见,该中介的宏指令202的执行并未在方框图700中叙述。
转译器710将该扩展预取宏指令702转译成对应的独占预取微指令711,PREFETCH.S[EAX],然后将此微指令送到扩展高速缓存单元720。该扩展记录逻辑721询问数据高速缓存722以决定所请求的高速缓存管线是否已存在并且有效(换言之,即非处于无效状态)在其数据高速缓存722内。若答案为否,则该扩展记录逻辑721命令总线单元730,由系统内存总线740,发出操作以从内存742取得该所请求的高速缓存管线。若其它的总线组件741均无该所请求的存高速缓存管线的副本,则扩展记录逻辑721即将所请求的高速缓存管线以独占状态送到其数据高速缓存722。若有一总线组件741拥有该请求的处于独占状态的高速缓存管线的区域副本时,则依照所应用的特定总线操作协议,此协议窥视在总线740上的操作以请求该高速缓存管线并将其区域副本变更成无效。若该区域副本已被修改,则其总线组件将修改的数据写入到其总线740,使得微处理器701可以取得该高速缓存管线的独占所有权。若有数个总线组件共享此高速缓存管线,则这些总线组件均将其区域副本变更成无效,使得该高速缓存高速缓存管线可以在独占状态下被送到微处理器701。在上述任意一情况,该所请求的高速缓存管线均可在在独占状态下被送到高速缓存722,并且可被随后的存储运算所使用。
转译器710将第二个宏指令702转译成一加载微指令711,LDEBX,[EAX],此微指令命令微处理器加载地址为寄存器EAX所指定的内存的内容到寄存器EBX。因为意图进行存储运算的预取的结果,该高速缓存管线所有的内容已经存在于该数据高速缓存722中,所以该高速缓存管线立即可用,并且使得该加载微指令711的执行无任何延迟。
第三个宏指令702被转译成一对应的增加微指令711,INC EBX,此指令命令执行逻辑将寄存器EBX内容增加。因为不需要新的数据,所以该加载微指令711不会被送到其扩展高速缓存单元720。
最后,在流程中的第四个宏指令702被转译成一存储微指令711,ST[EAX],EBX,此指令命令执行逻辑去执行一数据存储运算,以将寄存器EBX的内容写入到地址由寄存器EAX内容所指定的内存位置。该存储微指令711从而以待决的存储运算形式被送到其高速缓存单元720。于是,记录逻辑721检测到以待决的存储运算为目标的高速缓存管线存在于其数据高速缓存722,并且由于独占的预取的结果,该高速缓存管线是处于独占状态。因此该存储可不被延迟的立刻被公布。与图2的微处理器201不同的是,依据本发明的扩展高速缓存单元720不需发出一停滞信号723以公布该待决的存储,因为该目标高速缓存管线已被独占的预取。
图8显示一时序图800,用以描述依据本发明由图6及图7所示的微处理器所发出的总线操作集801,802,此总线操作由内存总线740以执行意图进行预取的存储运算。此二操作集801,802包括在微处理器701内的从总线单元730到内存总线740的请求操作801,与同样在在微处理器701内的从内存总线740回到总线单元730的响应操作802。时序图800描述当一被请求且处于独占状态的高速缓存管线,为依据本发明的预取-独占宏指令所指定的意图进行存储运算的预取的响应时,所执行的操作集801,802。根据上面的叙述,当执行一预取-独占指令时,扩展记录逻辑721命令其总线单元730对其内存总线740发出一数据读取与无效请求801,DATA READ/INV[EAX],请求将被寄存器EAX所指定的高速缓存管线以独占的MESI状态送到其区域高速缓存722。该数据读取与无效请求801是在时间点A发出。若所请求的高速缓存管线是处于独占的MESI状态,则在时间点B,该内存总线740响应发出数据响应请求802,DATA RESP[EAX].E,回到总线单元730。在这时,一存储运算的数据可从该高速缓存722读取或写入到该高速缓存,而不会导致总线操作延迟。
同图3所示,图8中的操作集801,802以一般性的方式表示,因为不同的微处理器架构应用不同的语义来说明总线操作801,802。图8中描述的操作集801,802大体上依照x86的惯例,但此描述只是意图进行说明本发明。此惯例并不会限定本发明只适用于此特定指令集架构。除此之外,值得注意的是,为了简明起见,在时序图800中已经省略了为先取得对数据总线740的存取(例如BUS REQUEST,BUS GRANT等等)的所有的操作。
本发明不只是考虑独占的预取一单一高速缓存管线,同时也包含需修改一个区段的数据的情况。因此,图9至图11将具体指向独占的预取一个区段的数据的讨论。
图9为依据本发明用以显示一扩展区段预取指令900的方框图。该扩展区段预取指令900包括一选用的多重前置码实体901,其一为一重复前置码901。该前置码实体901之后为一预取运算码902,其后则为一扩展地址指定元903。在一具体实施例中,每一个前置码及扩展地址实体901,903都是8位大小,而预取运算码实体902则为一或二个字节大小,除非本文中另行修订,所有的实体901-903均与x86的指令集架构一致。在此具体实施例中,该x86的重复前置码(REP)901被用来标示一区段预取运算。
在运行上,该预取运算码902为一特定运算码数值,此特定运算码数值用以命令一相符的微处理器执行一预取运算。在一x86的具体实施例中,运算码实体901的特定数值为OF18H。扩展地址指定元903是用以指定执行该特定类型的预取运算的执行。在一x86的具体实施例中,该扩展地址指定元903是ModR/M字节903。
如同图4所示,依据本发明,当微处理器检测到一预取宏指令900时,该微处理器被命令依据由扩展地址指定元403内容所指定的指示数值,去执行从内存预取数据到高速缓存。图5的编码实例也适用于描述在区段扩展地址指定元903的前置码指示的编码。但是若微处理器在该扩展预取指令内检测到一重复前置码901,则微处理器会试图预取一指定数量在独占状态下的高速缓存管线到其区域高速缓存内,而此高速缓存管线的数量是由微处理器内的一架构寄存器指定。在一具体实施例中,高速缓存管线的数量是由x86兼容的微处理器内的寄存器ECX所指定。
如图10,其为一方框图1000,用以描述在图6的微处理器600内执行区段预取与存储运算的一接口至内存的高速缓存单元。图10的微处理器1001内的组件的认证与运算类似于图7的微处理器701内的相似组件,只要将图7的百位数图号7用10来取代即可。为依据本发明以改进此区段预取运算,本发明使用一扩展转译器1010将有一重复前置码1002的扩展预取运算转译成微指令序列1011,用以命令执行一独占区段预取运算。除此之外,也使用一映像计数寄存器1013以加载自架构寄存器内的1012被预取的高速缓存管线的数量计数。并且使用扩展区段记录逻辑(extended block fill logic)1021以命令其总线单元1030请求独占的预取该指定区段的高速缓存管线,并将之送到其数据高速缓存1022。
为初始一独占的区段预取运算,第一个宏指令1002,MOV ECX,COUNT,用以将架构寄存器ECX内被独占的预取的区段内的高速缓存管线的数量计数初始化。扩展转译器1010将该第一个宏指令转译成加载微指令1011,LDECX,COUNT,此微指令命令微处理器将计数(count)加载ECX。当该计数被加载到ECX后,此计数也被透明的复制到映像计数寄存器1013,SHECX。同时,其它的指令1002则可在不干扰到预取运算的计数的情况下,修改其架构寄存器1012。
在计数被初始化之后,该扩展转译器1010转译一扩展区段预取指令1002,REP.PREF.S[EAX],此指令命令微处理器1001预取被ECX所指定数量的独占状态的高速缓存管线到其区域高速缓存,而该被预取的第一高速缓存管线的地址是由寄存器EAX所指定。以响应一命令该独占预取运算的微指令序列1011,该扩展区段记录逻辑1021命令其总线单元1030由其内存总线1040发出总线以请求该地址是由寄存器EAX所指定的处于独占状态的高速缓存管线。该记录逻辑1021在接收到这些高速缓存管线后,即将其配置到其数据高速缓存1022。一但以独占状态进入到该高速缓存,任意一或是全部的被预取的高速缓存管线均可被修改而不会造成额外的延迟。
如图11显示一时序图1100,用以描述依据本发明由图6及图10所示的微处理器1001所发出的总线操作集1101,1102,此总线操作由内存总线1040以执行区段预取与存储运算。为解说方便起见,图11实例的系统配置使用32字节高速缓存管线。但是,熟悉此领域技术人员将从下述的例证中发现本发明的应用包括所有可预期的系统配置的高速缓存管线行宽。此二操作集1101,1102包括在微处理器1001内的从总线单元1030到内存总线1040的请求操作1101,与同样在在微处理器1001内的从内存总线1040回到总线单元1030的响应操作。时序图1000描述当一被请求且处于独占状态的一区段的高速缓存管线,为依据本发明的包括一重复前置码的预取-独占宏指令所指定的意图进行存储运算的一区段预取的响应时,所执行的操作集1001,1002。根据上面的叙述,当执行一区段预取-独占指令时,该扩展记录逻辑1021命令其总线单元1030发出一多重的数据读取与无效请求1101,此请求并且对应于架构寄存器内所指定数量的高速缓存管线。该多重的请求包括该高速缓存管线区段内的所有高速缓存管线的地址,其地址为架构寄存器EAX的内容所起始指定。虽然该总线请求1101使用递增的地址次序,值得注意的是考虑到传统上不同的内存总线协议,本发明也包括递减的排序,随机的排序,及参差的排序。第一个数据读取与无效请求1101是在时间点A发出,第二个请求1101是在时间点B发出,以此类推,直到最后的请求在时间点D发出。在许多种架构中,总线请求1102是被标记的,以致于该请求开始在时间点C早于其最后的请求的完成。在时间点C,至少有在该区段内的一高速缓存管线是可被一待决的存储所使用。但是,为确保将延迟减到最小,最好是将该区段的速缓存管线的存储运算推延至时间点E,此时所有的响应1102均已到达且处于独占状态。
若所请求的高速缓存管线是处于独占的MESI状态,则在时间点B,该内存总线740响应发出一数据响应请求1102,DATA RESP[EAX].E,回到其总线单元1030。在这时,一存储运算的数据可从其高速缓存1022读取或写入到其高速缓存1022,而不会导致总线操作延迟。
图12为描述依据本发明执行一意图进行存储运算的预取方法的流程图1200。
流程开始于方框1202,在此处,依据本发明,一连串的宏指令被送到一指令队列。流程接着进行到方框1204。
在方框1204中,一个随后的宏指令被从该指令队列中提取,并将之送到一扩展转译器。流程接着进行到判断方框1206。
在判断方框1206中,将进行一项检查用以判断该随后的宏指令是否为一扩展预取指令。若答案为是,则流程进行到方框1208。若答案为否,则流程进行到方框1210。
在方框1208中,一被检测到的扩展预取指令被转译成一意图进行存储运算的预取的微指令序列,此微指令序列用以命令微处理器去预取处于独占状态的一指定的高速缓存管线。流程接着进行到方框1212。
在方框1210中,该宏指令被转译成一对应的微指令序列,此微指令序列用以命令微处理器去执行一指定的运算。流程接着进行到方框1212。
在方框1212中,一个随后的微指令序列被送到微处理器内的执行逻辑。流程接着进行到判断方框1214。
在判断方框1214中,将进行一项检查用以判断随后的微指令序列是否为一意图进行存储运算的预取的微指令序列。若答案为是,则流程进行到方框1216。若答案为否,则流程进行到方框1218。
在方框1216中,响应意图进行存储运算的预取的微指令序列,总线操作请求被发出到一内存总线以请求一指定高速缓存管线的独占所有权。随后该高速缓存管线以独占MESI状态被送到微处理器,因此可为存储运算所使用而不会发生因为提升该高速缓存管线至可被修改的状态所导致的延迟。流程接着进行到方框1220。
在方框1218中,执行该随后的微指令序列。流程接着进行到方框1220。
在方框1220中,本方法完成。
图13为描述依据本发明执行一意图进行存储运算之区段预取方法的流程图1300。
流程开始于方框1302,在此处,依据本发明,一连串的宏指令被送到一指令队列。流程接着进行到方框1304。
在方框1304中,一个随后的宏指令被从该指令队列中提取,并将之送到一扩展转译器。流程接着进行到判断方框1306。
在判断方框1306中,将进行一项检查用以判断该随后的宏指令是否为一扩展区段预取指令。若答案为是,则流程进行到方框1310。若答案为否,则流程进行到方框1308。
在方框1310中,一被检测到的扩展区段预取指令被转译成一意图进行存储运算的区段预取的微指令序列,此微指令序列用以命令微处理器去预取处于独占状态一指定数量的高速缓存管线。流程接着进行到方框1312。
在方框1308中,宏指令被转译成一对应的微指令序列,此微指令序列用以命令微处理器去执行一指定的运算。流程接着进行到方框1312。
在方框1312中,一个随后的微指令序列被送到微处理器内的执行逻辑。流程接着进行到判断方框1314。
在判断方框1314中,将进行一项检查用以判断随后的微指令序列是否为一意图进行存储运算的预取的微指令序列。若答案为是,则流程进行到方框1318。若答案为否,则流程进行到方框1316。
在方框1316中,执行该随后的微指令序列。流程接着进行到方框1328。
在方框1318中,响应意图进行存储运算的该区段预取的微指令序列,初始一暂时的计数器为数值0以监控将被发出的总线操作的数量,此总线操作请求一区段的高速缓存管线的独占所有权。流程接着进行到方框1320。
在方框1320中,第一高速缓存管线地址被指定给第一个数据读取与无效总线操作。该第一高速缓存管线地址来自于由该扩展区段预取指令所指定的地址,然后再加上一乘以方框1318的计数的高速缓存管线行宽。由于该计数初始为零,所以该第一高速缓存管线地址等同于该扩展区段预取指令所指定的地址。流程接着进行到方框1322。
在方框1322中,发出一由内存总线的数据读取与无效操作以预取该处于独占MESI状态的该第一高速缓存管线。流程接着进行到方框1324。
在方框1324中,将该计数增加后,流程接着进行到方框1326。
在判断方框1326中,将进行一项检查用以判断该增加的计数是否等同于被预取的高速缓存管线的数量,该高速缓存管线线的数量存储于一映像寄存器中。若答案为否,则流程进行到方框1320,于其中执行另一个重复以提取一下一高速缓存管线。若计数等同于该映像寄存器的内容,则发出所有总线操作,同时流程进行到方框1328。
在方框1328中,本方法完成。
虽然本发明及其目的、特征与优点已详细叙述,其它具体实施例仍涵盖在本发明的范围内。例如,在此描述了依照MESI协议时,本发明对于待决的存储运算所具有的优点。选择MESI作为本发明的例子是因为其在本技术领域中的广泛应用。但是,值得注意的是本发明提供预取的数据到一区域高速缓存,该数据的形式或状态使得该数据可立即被一待决的存储运算所修改,而不需发出操作到一内存总线。该形式或状态是否依照MESI并不重要。
如前所述,不同的架构使用不同的高速缓存管线行宽。在桌上型计算机系统中,当今普遍使用32-字节的高速缓存管线。但是在本发明中使用的叙述并不限制本发明不能应用于32-,64-,128-,或甚至于256-字节的高速缓存管线。相反的,本发明预期可应用在任何限制其区域高速缓存管线的修改且不提供直接预取这些高速缓存管线的系统架构,以至于该高速缓存管线可立即被修改而不必需依靠总线操作以取得修改许可。
此外,本发明使用相符于x86架构的具体实施例作为例证。无疑的,x86-兼容的微处理器可以从应用本发明得到好处,但值得注意的是本发明的应用范畴并不只限于x86-兼容的环境,因为仍有许多不同的架构所应用的预取指令也不能保证其结果为独占的数据。
虽然在此处应用一地址指定元以指定被预取的高速缓存管线的地址,此种指定方式并不需是显示的。一个依据本发明的预取指令的具体实施例可以隐含的指定一包含该地址的架构寄存器,此处由一先前执行的指令将该地址加载到该架构寄存器。
以上所述为本发明的较佳实施例,并非用以限定本发明的实施范围,凡依本发明所做的均等变化与修饰,皆应属于本发明专利的涵盖范围。
Claims (17)
1、一种微处理器装置,用以自内存独占的预取一高速缓存管线,此装置的特征在于包含:
一转译逻辑,配置成将一扩展预取指令转译成一微指令序列,用以命令一微处理器预取处于独占状态的一高速缓存管线;以及
一执行逻辑,连接至该转译逻辑,配置成接收该微指令序列,并由一内存总线发出操作请求处于该独占状态高速缓存管线。
2、如权利要求第1项所述的微处理器装置,其特征在于:该高速缓存管线包括一将被随后的存储运算所修改的数据实体,且该预取处于该独占状态的该高速缓存管线与程序指令的执行平行,并早于随后命令该微处理器修改该数据实体的一的存储运算。
3、如权利要求第2项所述的微处理器装置,其特征在于,预取处于该独占状态的该高速缓存管线排除了对应于执行该随后的存储运算的一程序延迟,并且该程序延迟导因于必须发出的总线操作将该高速缓存管线由一共享状态由提升至该独占状态。
4、如权利要求第1项所述的微处理器装置,其特征在于,该扩展预取指令包含对在一现存指令集内的一现存预取指令的修改,且该现存预取指令原本不提供预取处于该独占状态的该高速缓存管线。
5、如权利要求第4项所述的微处理器装置,其特征在于,该扩展预取指令包含存在于一扩展地址指定元实体内的一预取运算码字段,其中该预取运算码字段的一指定数值命令该微处理器预取处于该独占状态的该高速缓存管线,并且其中该预取运算码字段的其它数值命令该微处理器依照该现存指令集执行其它类型的预取运算。
6、如权利要求第1项所述的微处理器装置,其特征在于,响应于该微指令序列,该执行逻辑命令一总线单元由该内存总线发出这些操作。
7、如权利要求第6项所述的微处理器装置,其特征在于,这些操作包含一数据读取与无效操作,这些操作请求该高速缓存管线的独占所有权。
8、一种微处理器装置,用以执行一意图进行存储运算的预取,此装置的特征在于包含:
一扩展预取指令,配置成命令微处理器预取一处于独占状态的高速缓存管线;以及
一转译器,配置成接收该扩展预取指令,并将该扩展预取指令转译成相关的微指令,在其中该相关的微指令命令在微处理器内的执行逻辑由一内存总线发出总线操作,用以请求该高速缓存管线的独占所有权。
9、如权利要求第8项所述的微处理器,其特征在于,该高速缓存管线包括一将被随后的存储运算所修改的数据实体,且该预取处于该独占状态的该高速缓存管线与程序指令的执行平行,并早于随后命令该微处理器修改该数据实体的一的存储运算。
10、如权利要求第9项所述的微处理器装置,其特征在于,该扩展预取指令包含对在一现存指令集内的一现存预取指令的修改,且该现存预取指令原本不提供预取处于该独占状态的该高速缓存管线。
11、如权利要求第10项所述的微处理器,其特征在于,该扩展预取指令包含存在于一扩展地址指定元实体内的一预取运算码字段,其中该预取运算码字段的一指定数值命令该微处理器预取处于该独占状态的该存高速缓存管线,并且其中该预取运算码字段的其它数值命令该微处理器依照该现存指令集执行其它类型的预取运算。
12、如权利要求第8项所述的微处理器装置,其特征在于,响应于该对应的微指令,该执行逻辑命令一总线单元由该内存总线发出这些操作。
13、如权利要求第12项所述的微处理器装置,其特征在于,这些总线操作一数据读取与无效操作,这些操作请求该高速缓存管线的独占所有权。
14、一种预取处于一独占状态的一高速缓存管线的方法,此方法的特征在于包含:
提取一扩展预取宏指令;
将该扩展预取宏指令转译成微指令序列,该微指令序列用以命令一微处理器预取处于独占状态的该区段的高速缓存管线;以及
响应该微指令序列,由内存总线发出总线操作以读取该处于独占状态的高速缓存管线。
15、如权利要求14项所述的方法,其特征在于,该发出动作包含:
许可该微处理器平行的执行该发出与随后的指令。
16、如权利要求14项所述的方法,其特征在于,该提取动作包含:
提供该扩展预取指令作为对在一现存指令集内的一现存预取指令的修改,其中该现存预取指令原本不提供预取处于该独占状态的该高速缓存管线。
17、如权利要求14项所述的方法,其特征在于,该发出动作包含:
提供由内存总线的一数据读取与无效操作,此操作请求该高速缓存管线的独占所有权。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/364,911 US7080210B2 (en) | 2002-02-12 | 2003-02-11 | Microprocessor apparatus and method for exclusive prefetch of a cache line from memory |
US10/364,911 | 2003-02-11 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1514349A true CN1514349A (zh) | 2004-07-21 |
CN1266588C CN1266588C (zh) | 2006-07-26 |
Family
ID=32681697
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN03158568.XA Expired - Lifetime CN1266588C (zh) | 2003-02-11 | 2003-09-19 | 意图进行存储的预取机制 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7080210B2 (zh) |
EP (1) | EP1447745B1 (zh) |
CN (1) | CN1266588C (zh) |
DE (1) | DE60329574D1 (zh) |
TW (1) | TWI220196B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109597776A (zh) * | 2017-09-30 | 2019-04-09 | 杭州华为数字技术有限公司 | 一种数据操作方法、内存控制器以及多处理器系统 |
CN113377704A (zh) * | 2021-06-11 | 2021-09-10 | 上海壁仞智能科技有限公司 | 人工智能芯片以及数据操作方法 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013095640A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Methods and apparatus for efficient communication between caches in hierarchical caching design |
US10656945B2 (en) | 2012-06-15 | 2020-05-19 | International Business Machines Corporation | Next instruction access intent instruction for indicating usage of a storage operand by one or more instructions subsequent to a next sequential instruction |
US9170955B2 (en) * | 2012-11-27 | 2015-10-27 | Intel Corporation | Providing extended cache replacement state information |
US9158702B2 (en) | 2012-12-28 | 2015-10-13 | Intel Corporation | Apparatus and method for implementing a scratchpad memory using priority hint |
JP6055456B2 (ja) * | 2014-10-31 | 2016-12-27 | インテル・コーポレーション | 階層的キャッシュ設計におけるキャッシュ間の効率的通信のための方法および装置 |
US10509726B2 (en) * | 2015-12-20 | 2019-12-17 | Intel Corporation | Instructions and logic for load-indices-and-prefetch-scatters operations |
US10572263B2 (en) * | 2016-03-31 | 2020-02-25 | International Business Machines Corporation | Executing a composite VLIW instruction having a scalar atom that indicates an iteration of execution |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4959777A (en) | 1987-07-27 | 1990-09-25 | Motorola Computer X | Write-shared cache circuit for multiprocessor system |
CA2051209C (en) | 1990-11-30 | 1996-05-07 | Pradeep S. Sindhu | Consistency protocols for shared memory multiprocessors |
JP2500101B2 (ja) | 1992-12-18 | 1996-05-29 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 共用変数の値を更新する方法 |
US5903911A (en) | 1993-06-22 | 1999-05-11 | Dell Usa, L.P. | Cache-based computer system employing memory control circuit and method for write allocation and data prefetch |
US5892970A (en) | 1996-07-01 | 1999-04-06 | Sun Microsystems, Inc. | Multiprocessing system configured to perform efficient block copy operations |
EP0825538A1 (en) | 1996-08-16 | 1998-02-25 | Lsi Logic Corporation | Cache memory system |
US5966734A (en) | 1996-10-18 | 1999-10-12 | Samsung Electronics Co., Ltd. | Resizable and relocatable memory scratch pad as a cache slice |
US6018763A (en) | 1997-05-28 | 2000-01-25 | 3Com Corporation | High performance shared memory for a bridge router supporting cache coherency |
US5944815A (en) | 1998-01-12 | 1999-08-31 | Advanced Micro Devices, Inc. | Microprocessor configured to execute a prefetch instruction including an access count field defining an expected number of access |
US6014735A (en) | 1998-03-31 | 2000-01-11 | Intel Corporation | Instruction set extension using prefixes |
US6088789A (en) | 1998-05-13 | 2000-07-11 | Advanced Micro Devices, Inc. | Prefetch instruction specifying destination functional unit and read/write access mode |
US6253306B1 (en) * | 1998-07-29 | 2001-06-26 | Advanced Micro Devices, Inc. | Prefetch instruction mechanism for processor |
US6289420B1 (en) | 1999-05-06 | 2001-09-11 | Sun Microsystems, Inc. | System and method for increasing the snoop bandwidth to cache tags in a multiport cache memory subsystem |
US6266744B1 (en) | 1999-05-18 | 2001-07-24 | Advanced Micro Devices, Inc. | Store to load forwarding using a dependency link file |
US6470444B1 (en) | 1999-06-16 | 2002-10-22 | Intel Corporation | Method and apparatus for dividing a store operation into pre-fetch and store micro-operations |
US6557084B2 (en) | 1999-07-13 | 2003-04-29 | International Business Machines Corporation | Apparatus and method to improve performance of reads from and writes to shared memory locations |
US6460132B1 (en) | 1999-08-31 | 2002-10-01 | Advanced Micro Devices, Inc. | Massively parallel instruction predecoding |
JP2001222466A (ja) | 2000-02-10 | 2001-08-17 | Nec Corp | マルチプロセッサ・システムと共有メモリ制御システム及び方法並びに記録媒体 |
US6751710B2 (en) | 2000-06-10 | 2004-06-15 | Hewlett-Packard Development Company, L.P. | Scalable multiprocessor system and cache coherence method |
US6845008B2 (en) | 2001-03-30 | 2005-01-18 | Intel Corporation | Docking station to cool a notebook computer |
US6915415B2 (en) | 2002-01-07 | 2005-07-05 | International Business Machines Corporation | Method and apparatus for mapping software prefetch instructions to hardware prefetch logic |
US7380103B2 (en) | 2002-04-02 | 2008-05-27 | Ip-First, Llc | Apparatus and method for selective control of results write back |
US6832296B2 (en) | 2002-04-09 | 2004-12-14 | Ip-First, Llc | Microprocessor with repeat prefetch instruction |
-
2003
- 2003-02-11 US US10/364,911 patent/US7080210B2/en not_active Expired - Lifetime
- 2003-06-04 DE DE60329574T patent/DE60329574D1/de not_active Expired - Lifetime
- 2003-06-04 EP EP03253514A patent/EP1447745B1/en not_active Expired - Lifetime
- 2003-06-13 TW TW092116035A patent/TWI220196B/zh not_active IP Right Cessation
- 2003-09-19 CN CN03158568.XA patent/CN1266588C/zh not_active Expired - Lifetime
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109597776A (zh) * | 2017-09-30 | 2019-04-09 | 杭州华为数字技术有限公司 | 一种数据操作方法、内存控制器以及多处理器系统 |
CN113377704A (zh) * | 2021-06-11 | 2021-09-10 | 上海壁仞智能科技有限公司 | 人工智能芯片以及数据操作方法 |
Also Published As
Publication number | Publication date |
---|---|
US20030177315A1 (en) | 2003-09-18 |
US7080210B2 (en) | 2006-07-18 |
CN1266588C (zh) | 2006-07-26 |
TW200415472A (en) | 2004-08-16 |
TWI220196B (en) | 2004-08-11 |
EP1447745A2 (en) | 2004-08-18 |
EP1447745A3 (en) | 2004-11-10 |
EP1447745B1 (en) | 2009-10-07 |
DE60329574D1 (de) | 2009-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1297885C (zh) | 高速缓存数据区段的配置与初始化机制 | |
CN1324459C (zh) | 利用提示缓冲器隐藏存储器访问等待时间的方法和装置 | |
CN1514374A (zh) | 变更高速缓存数据区段的方法与装置 | |
TWI390445B (zh) | 用於在一多重執行緒處理器中之一管線的一分配點而封鎖一執行緒之方法、電腦程式產品及設備 | |
US7464198B2 (en) | System on a chip and a method for programming a DMA controller in a system on a chip | |
CN107667358B (zh) | 用于在多个拓扑结构中使用的装置及其方法 | |
CN1266589C (zh) | 多重高速缓冲存储器线写回和作废技术 | |
TWI537831B (zh) | 多核心處理器、用於執行處理程序切換之方法、用於保全一記憶體區塊之方法、用於致能使用一多核心裝置之異動處理之設備、以及用於執行記憶體異動處理之方法 | |
CN1806231A (zh) | 提供软件实现的高速缓冲存储器的方法与装置 | |
CN101059783A (zh) | 事务型存储器的虚拟化 | |
CN1690952A (zh) | 根据多组高速缓存组预测来选择执行的指令的装置和方法 | |
TWI733760B (zh) | 記憶體複製指令、處理器、方法及系統 | |
CN1864131A (zh) | 处置在基于跟踪缓存的处理器中的异常指令的系统及方法 | |
CN1094526A (zh) | 用于在多条总线之间传送信息的系统和方法 | |
CN1266588C (zh) | 意图进行存储的预取机制 | |
CN1514373A (zh) | 对高速缓存界线进行更名的装置与方法 | |
US20130346683A1 (en) | Cache Sector Dirty Bits | |
CN1265285C (zh) | 预取区段内存以进行储存的装置及方法 | |
CN1560736A (zh) | 储存引发指令同调性的装置及方法 | |
CN1225690C (zh) | 快取线配置与初始化之装置及方法 | |
TWI260540B (en) | Method, apparatus and computer system for generating prefetches by speculatively executing code during stalls | |
US6973541B1 (en) | System and method for initializing memory within a data processing system | |
JP4965974B2 (ja) | 半導体集積回路装置 | |
JP2006039821A (ja) | マルチプロセッサ搭載システムlsiの制御方法 | |
JP2006039824A (ja) | マルチプロセッサ搭載システムlsiの制御方法 |
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 | ||
CX01 | Expiry of patent term |
Granted publication date: 20060726 |
|
CX01 | Expiry of patent term |