CN1560736A - 储存引发指令同调性的装置及方法 - Google Patents

储存引发指令同调性的装置及方法 Download PDF

Info

Publication number
CN1560736A
CN1560736A CNA2004100560993A CN200410056099A CN1560736A CN 1560736 A CN1560736 A CN 1560736A CN A2004100560993 A CNA2004100560993 A CN A2004100560993A CN 200410056099 A CN200410056099 A CN 200410056099A CN 1560736 A CN1560736 A CN 1560736A
Authority
CN
China
Prior art keywords
memory page
instruction
logic device
positions
power
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
CNA2004100560993A
Other languages
English (en)
Inventor
罗德尼・E・胡克
罗德尼·E·胡克
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.)
INTELLIGENCE FIRST CO
IP First LLC
Original Assignee
INTELLIGENCE FIRST CO
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 INTELLIGENCE FIRST CO filed Critical INTELLIGENCE FIRST CO
Publication of CN1560736A publication Critical patent/CN1560736A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3812Instruction prefetching with instruction modification, e.g. store into instruction stream
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

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

储存引发指令同调性的装置及方法
技术领域
本发明涉及微电子学的领域,尤其涉及一种技术,其应用于一管线微处理器,以确保在其管线阶段的指令的同调性。
背景技术
早期的微处理器设计成一次执行一个程序指令。因此,早期的微处理器会从程序的内存中提取一第一程序指令并执行。在执行该第一指令后,该早期的微处理器会从程序的内存中提取一第二程序指令并执行。然后,一第三程序指令会被提取并执行,依此类推。由于在一特定时间点只有一个指令被执行,应用程序设计师可设计包含自我修正码区段的程序。
于其最简单的形式中,自我修正码是可自我修正的程序代码。在上述的例子中,若该第一程序指令的执行结果由该早期微处理器储存于一内存位置,并且该内存位置为该第三程序指令所欲提取的位置,则自我修正码会存在。早期微处理器应用自我修正码的原因如下:节省内存空间、执行子程序的呼叫及返回、隐藏应用程序中执行的指令以防止侵害著作权(或暗中启动病毒)、作为特殊硬件的接口或增进整体效能。自我修正码的技术在当时并不受欢迎,现今也不受欢迎,因为这类的程序代码通常难以理解与维护。
尽管有上述的缺陷,自我修正码却因为上述理由而仍然在使用。但是,早期的微处理器却没有因为需要支持执行自我修正码而受到负面冲击,现今,微处理器却因为需要有额外的逻辑器单元,而受到极大的冲击,该额外逻辑器单元用于确保在出现自我修正码区段的程序指令得以被适当地执行。这是因为现今的微处理器不再一次只执行一个指令,而可同时执行数个指令。多个指令同时在连续的区段中执行,换言之,在一现今微处理器的管线阶段中执行,Hennessy及Patterson定义管线(pipeline)为“一种运算技术,其中多个指令在运作过程中相互重迭”~Computer Architecture:AQuantitative Approach,second edition,by John L.Hennessy and David A.Patterson,Morgan Kaufmann Publishers,San Francisco,Calif.,1996.Hennessy及Patterson并且提供一对于管线的描述如下:管线可视同是一种装配线。在一汽车装配在线,有许多步骤,每一步骤均对汽车的装配有贡献,每一步骤均与其它步骤平行运作,虽然其作用在不同的汽车上。在计算机的管线中,管线中的每一步骤完成一指令的一部分。如同装配线一般,不同的步骤均平行地完成不同指令的不同部分。管线中的每一步骤称之为管线阶段(pipestage)或管线区段(pipe segment)。这些阶段一个接着一个而形成一管线。指令从管线的一端进入,经由这些阶段,而从另一端出去,就好像汽车在装配在线一样。
因此,在现今的微处理器中,指令从管线的一端送入,并前进经过一连串的管线阶段直到完成执行,其运作如同装配线一样。当其每一管线阶段执行不同的程序指令时,现今的管线微处理器以尖峰效率运作。因为等待某些管线阶段完成其运算,而导致提取指令或执行指令的拖延,会造成管线效率(即,总处理能力)的降低。但是,在现今的微处理器需要支持许多不同形式的运算,因此经常导致管线的拖延。例如,对内存读取及写入运算是相当慢的运算,而经常需要拖延管线。程序流条件性地改变(即,条件性的分支动作(branch operation))往往导致管线拖延。而管线中出现自我修正码,则是另一个现今的微处理器管线中程序流需要被中断的情况。
考虑上述例子,该第一程序指令的执行结果储存于对应于该第三程序指令的内存位置。当由该第一程序指令所主导的储存运算发生时,若该第三程序指令已从内存中提取并于一前段管线阶段运算完成,则于该前段管线阶段运算的该第三程序指令并非应用程序设计师所意图执行的运算。这是因为当该第三程序指令内存的位置被存取以提取该第三程序指令时,该应用程序设计师意图执行的指令尚未储存于该内存中。此例子描述因自我修正码的存在,而导致一管线中指令不同调的情况,该情况为现今的微处理器所必须处理的问题。但是,现今的微处理器并未无法显示是否正在执行自我修正码。因此,现今的微处理器必须要提供延伸逻辑器单元以检查管线中的每个指令的同调性,该检查对于每一等候执行的储存运算执行或对于正在管线中的指令的储存运算执行。
因此,需要管线微处理器中的一装置,该装置用以检查管线中指令的同调性,该装置较为简单且需要较少的逻辑器单元。
发明内容
本发明用于解决上述的问题以及公知技术的其它问题、缺陷以及限制。本发明提供一种优越的技术,用于由等候执行或同时被执行的储存运算所导致的状况中,以确保现今微处理器管线中的指令的同调性。
为了实现上述目的,本发明提供一种管线微处理器中的装置,用于确保该管线微处理器的阶段中指令的同调性,该装置包括:一指令高速缓存管理逻辑器,组态成接收对应于一下一指令的一地址,并侦测对应于该下一指令的一存储页的一部份可否可自由做存取,而无须检查该存储页该部分中指令的同调性,且若必须检查同调性时,提供该地址;以及同步逻辑器,组态成从该指令高速缓存管理逻辑器接收该地址,并命令一数据高速缓存管理逻辑器检查该存储页的该部分中指令的同调性,且若该指令与该存储页该部分不同调,则该同步逻辑器单元命令该管线微处理器拖延下一指令的提取,直到该管线微处理器的该阶段已执行所有先前的指令。
本发明又提供一种管线微处理器中的装置,用于确保该管线微处理器的阶段中指令的同调性,该装置包括:一数据高速缓存管理逻辑器单元,组态成接收对应一未决的储存指令的一地址,并侦测对应于该储存指令的一存储页的一部份可否自由做存取,而无须检查该存储页的该部分中指令的同调性,且若必须检查同调性时,提供该地址;以及同步逻辑器,组态成从该数据高速缓存管理逻辑器接收该地址,并命令一指令高速缓存管理逻辑器检查该存储页的该部分中指令的同调性,且若该指令与该存储页该部分不同调,则该同步逻辑器命令该管线微处理器清除该管线微处理器的先前阶段。
本发明还提供一种管线微处理器的方法,用于确保该管线微处理器的阶段中指令的同调性,该方法包括下列步骤:在一数据高速缓存中,侦测对应于一未决储存指令的一存储页的一部分可自由做存取,而无须检查该存储页该部分中指令的同调性;命令一指令高速缓存中的逻辑器检查该存储页的该部分中指令的同调性;若该指令不同调,则清除该管线微处理器的先前阶段。
也就是说,在一实施例中,本发明提供一管线微处理器中的一装置,该装置用于确保在管线微处理器的各阶段中指令的同调性。该装置包括指令高速缓存管理逻辑器以及同步逻辑器。该指令高速缓存管理逻辑器接收一对应于下一个指令的地址,并执行一检测,该检测确定在未检查对应于该下一个指令的内存页(memory page)的一部份的指令的同调性之前,该内存页的该部分无法自由地被存取,并且在完成该检测之后,送出该地址。该同步逻辑器接收来自指令高速缓存管理逻辑器单元的该地址。该同步逻辑器单元指令数据逻辑器检查该内存页的该部分中的指令的同调性,而且,若不同调,该同步逻辑器指令该管线微处理器以拖延下一个指令的提取,直到该管线微处理器的这些阶段处理完其所有先前的指令。
本发明也可被视为一在管线微处理器中的装置,该装置用以确保在管线微处理器的阶段中指令的同调性。该装置包含数据高速缓存管理逻辑器与同步逻辑器。该数据高速缓存管理逻辑器接收一对应于一等待执行的储存指令的地址,并执行一检测,该检测确定在未检查对应于该下一个储存指令的内存页的一部份的指令的同调性之前,该内存页的该部分无法自由地被存取,并且在完成该检测之后,送出该地址。该同步逻辑器接收来自该数据高速缓存管理逻辑器的该地址,并指令数据逻辑器检查该内存页的该部分中的指令的同调性,而且,若不同调,该同步逻辑器指令该管线微处理器以清除(flush)该管线微处理器的先前阶段。
本发明亦包括一种管线微处理器的方法,该方法用以确保管线微处理器的阶段中指令的同调性。该方法包括在一数据高速缓存中执行一检测,该检测确定在未检查对应于该下一个等候执行的储存指令的内存页的一部份的指令的同调性之前,该内存页的该部分无法自由地被存取;命令一指令高速缓存中的逻辑器检查该部分的内存页中的指令的同调性;若该指令不同调,则清除该管线微处理器的先前阶段。
本发明的内容、特征以及优点可借助下列叙述及附图更明显易懂。
附图说明
借助图1为公知技术的方框图,描述现今管线微处理器的一范例阶段。
图2为一方框图,描述一现今的技术,该技术用于侦测微处理器管线中由等待执行或正在执行的储存运算所导致的不同调。
图3为一方框图,描述根据本发明的一用于在等待执行或正在执行的储存运算发生时,确保管线指令同调性的微处理器。
图4为一方框图,描述在图3的微处理器中的指令高速缓存以及数据高速缓存的相互关系。
图5为描述本发明的高速缓存管理逻辑器的方框图。
图6为一表格,描述本发明响应一未决的储存运算的同步动作,以确保管线中指令的同调性。
图7为一表格,描述本发明中在提取下一个指令之前的同步动作,以确保管线中指令的同调性。
图8为一方框图,描述本发明的高速缓存管理逻辑器的另一实施例。
图9为一表格,描述本发明运用图8的高速缓存管理逻辑器响应一未决的储存运算的同步动作,以确保管线中指令的同调性的另一实施例。
图10为一表格,描述本发明运用图8的高速缓存管理逻辑器在提取下一个指令之前的同步动作,以确保管线中指令的同调性另一实施例。
其中,附图标记说明如下:
100微处理器                102提取逻辑器
104转译逻辑器              106寄存逻辑器
108寻址逻辑器              110加载逻辑器
112执行逻辑器              114储存逻辑器
116写回逻辑器              118指令高速缓存
120数据高速缓存            122总线接口单元
124提取总线                126加载总线
128储存总线                130、132总线
134内存总线                200方框图
202提取阶段逻辑器          204储存阶段逻辑器
206同步逻辑器              208未决储存目标侦测逻辑器
210储存检查逻辑器          216次指令指针寄存器
218微运算寄存器            220目标地址寄存器
222拖延信号                226储存目标寄存器
228指令指针寄存器          300微处理器
302提取逻辑器              304转译逻辑器
306寄存逻辑器                  308寻址逻辑器
310加载逻辑器                  312执行逻辑器
314储存逻辑器                  316写回逻辑器
318指令高速缓存                320数据高速缓存
322总线接口单元                324提取总线
326加载总线                    328储存总线
330、332总线                   334内存总线
336指令转译后备缓冲器          339清除信号
340同步逻辑器                  341拖延信号
342总线                        344数据转译后备缓冲器
400方框图                      402下一指令指针
404指令高速缓存                406指令高速缓存管理逻辑器
408指令转译后备缓冲器(ITLB)
410TLB入口
412、414、416、418部分存储页的所有权字段
420总线                        422DSNOOP总线
424同步逻辑器                  428微运算字段
430相关目标地址字段            432数据高速缓存
434数据高速缓存管理逻辑器      436ISNOOP总线
438数据转译后备缓冲器(DTLB)
440TLB入口
442、444、446、448部分存储页的所有权字段
450总线                        500高速缓存管理逻辑器
502TLB存取逻辑器               504监视逻辑器
506抓取逻辑器单元              510总线
512存出总线                    514存入总线
516监视总线                    800高速缓存管理逻辑器
801TLB入口字段                 802DTLB存取逻辑器
803脏位(dirty bit)
具体实施方式
有鉴于以上背景技术讨论中的使用于现今微处理器的管线化指令及相关的技术,以确保在出现自我修正码时管线阶段中指令的同调性,其相关技术范例请参照图1及图2。这些范例特别指出并叙述当应用该公知技术于现今管线微处理器中,以确保储存引发指令的同调性时,该公知技术的缺陷及限制。接着,参照图3-图10讨论本发明,指出本发明的样态、特征及优点,优于在现今的管线微处理器中用于确保指令同调性的公知技术。本发明达到确保指令同调性所需的功能,但其比运算现存的技术需要较少的资源及动力。
请参阅图1,其为一方框图,描述在一现今管线微处理器100中的一范例阶段。该微处理器100有一提取逻辑器102,耦接至一转译逻辑器104。该转译逻辑器104耦接至寄存逻辑器106。该寄存逻辑器106耦接至寻址逻辑器108。该寻址逻辑器106耦接至加载逻辑器110。该加载逻辑器110耦接至执行逻辑器112。该执行逻辑器112耦接至储存逻辑器114。该储存逻辑器114耦接至写回逻辑器116。该微处理器100具有一指令高速缓存118,该指令高速缓存118经由一提取总线(fetch bus)124耦接至提取逻辑器102。此外,该微处理器100亦具有一数据高速缓存120,该数据高速缓存120经由一加载总线126耦接至该加载逻辑器110,并经由一储存总线128耦接至该储存逻辑器114。该指令高速缓存118以及该数据高速缓存120分别经由总线130及132耦接至一总线接口单元122。该总线接口单元122经由一内存总线134连接至系统内存(未显示于图标中)。
在运算中,该提取逻辑器102从系统内存中提取宏指令供微处理器100执行。该指令高速缓存118是一种非常快的芯片内存(on-chip memory),且其功能为预测到哪一个字段的内存要做提取指令的存取,并先行将此字段储藏起来以便该提取逻辑器102可以在该指令高速缓存118中快速地做存取,而无须经由总线接口单元122及内存总线134做存取。若对应于下一个指令指针的内存字段在该指令高速缓存118中常驻且有效,则称该下一个指令指针经过一次“高速缓存命中”。当内存字段不常驻于高速缓存118中,且必须用内存总线134提取下一个指令时,会产生“高速缓存未中”。被提取的宏指令提供给转译逻辑器104,其将宏指令转译成相关的微指令序列(也被称为本机指令native instruction)供微处理器100的后续阶段106、108、110、112、114、116执行。该相关微指令序列中的每一微指令用以命令后续管线阶段106、108、110、112、114、116内的逻辑器运算执行后续的运算,来达成一对应的被提取宏指令所规范的架构运算。转译后的微指令提供至寄存逻辑器106。用于后续阶段108、110、112、114、116的次运算的运算码(operand)从寄存逻辑器106中的寄存器(未图标)存取。该寻址逻辑器108所使用的运算码来自寄存逻辑器106或来自由一所提供的微指令所产生内存位置的虚拟地址,因此这些特殊次运算中所需的运算码可从该寄存逻辑器106或该虚拟地址存取。所产生用于数据撷取次运算的地址提供至加载逻辑器110,该加载逻辑器110经由该数据高速缓存120从内存撷取运算码。如同指令高速缓存118一般,该数据高速缓存120亦是一种很快速的芯片内存,其功能为预测到哪一个字段的内存要做存取,而先行将此字段储藏起来,以便加载逻辑器110能快速地经由数据高速缓存120存取运算码,而不须经由总线接口单元122及内存总线134做存取。同样地,若对应于运算码负载地址的内存区在数据高速缓存120中为常驻且有效,则称为一数据“高速缓存命中”。当内存区不常驻于数据高速缓存120时称为数据“高速缓存未中”。
如同先前的管线阶段102、104、106、108、110一般,该执行逻辑器112使用所提供的运算码(如果需要)以执行由微指令所规范的这些次运算。如果执行逻辑器112所执行这些次运算的结果需要被写入到系统内存中,则将这些结果提供至储存逻辑器114。该储存逻辑器114则执行将结果储存至内存位置的次运算。该储存逻辑器114亦耦接至数据高速缓存120,并理想地执行储存运算至数据高速缓存120中的高速缓存位置,而不须将结果数据经由内存总线134写入。指定储存于架构寄存器(architectural register)的执行结果提供至写回逻辑器116。该写回逻辑器116将结果写入架构寄存器中。总而言之,将从内存中提取的宏指令转译成相关的微指令,然后这些相关的微指令同步于管线频率信号(未图标)的依序经过每个后续的逻辑器运算阶段106、108、110、112、114、116,使得指定的次运算可以如同装配在线的作业一般同时执行。
图1的方框图描述微处理器100中应用于说明本发明时所需要的必要组件,为了清楚起见,从附图中省略了微处理器100中的许多逻辑器运算。本领域技术人员能了解微处理器100包括许多特定运算的阶段与逻辑器单元,为了简明起见,将其中的某些集合为一。例如,该加载逻辑器单元110可以具体化为一高速缓存接口阶段,后面接着一高速缓存线校准阶段(cache linealignment stage)。而且,本领域技术人员能了解微处理器100中执行逻辑器112可包含多个平行执行单元,例如一整数单元、一浮点数单元以及一单一指令/多数据单元。
为了解微处理器100的管线阶段102、104、106、108、110、112、114、116中的指令同调性的必须性,本发明提醒在两种情况下必须检查指令的同调性:1)当提取逻辑器102到指令高速缓存118提取下一个指令时。2)当储存逻辑器114对数据高速缓存120宣告一储存运算时。在第一个情况下,当储存逻辑器114对数据高速缓存120宣告一微指令,并且该微指令用以执行一储存运算至与下一个指令相关的内存位置,但是该数据高速缓存120尚未将修正的位置经由内存总线134传回内存中。在此情况中,若该提取逻辑器102从指令高速缓存118或内存经由总线接口单元122撷取下一个指令,则下一个指令会因数据高速缓存120宣告储存至内存的潜时而不正确。在第二个情况下,指令已被提取并已提供至在储存阶段114之前的任何管线阶段102、104、106、108、110、112,当于其中的一储存微指令命令一储存运算至刚提取该指令的内存位置。在此情况中,若不做同调性的管理,在管线过程中提取的指令会不正确。
就第一个情况而言,若微处理器中的逻辑器单元侦测到一未决的储存运算与下一个将被提取的指令有关,通常会延迟下一个指令的提取(换言之,拖延提取逻辑器102)直到其它所有的指令已经通过后续的管线阶段并已完成执行。通常使用管线闲置(pipeline idle)指示或信号(未图标)来表示微处理器100中的管线是空的且所有未决的储存运算已经被宣告至内存。此时,提取下一个指令是安全的,因为会修正下一个指令的储存运算已经完成了。就第二个情况而言,当微处理器中的逻辑器单元侦测到与一未决的储存指令目标地址(也称为目的地址)相关的指令已经在管线中时,通常将来自管线所有阶段的指令清除,该清除并且包括与目标位置相关的指令的阶段,以拖延指令的提取直到该管线为闲置,然后再开始从与储存的目标地址相关的位置提取指令。
储存引发指令不同调导因于自我修正码需要大量的逻辑器运算(以及集成电路模板的一对应区域)来侦测及管理,如上所述。所需的逻辑器运算量与存在于微处理器管线中的阶段的数量成正比。为了进一步表示,现今微处理器的指令同调性侦测及管理的法则参照图2。
请参阅图2,其为一方框图200说明现今用于侦测微处理器管线中如图1所示的指令不同调的技术,该不同调导因于未决或同时的储存运算。该方框图200中的提取阶段逻辑器运算202,其具有一次指令指针寄存器216耦接至未决储存目标侦测逻辑器(pending store target detect logic)208。该未决储存目标侦测逻辑器208存取一数量的储存目标寄存器226,该储存目标寄存器226的数量与微处理器可处理的未决储存运算的数量相等。例如,依架构所使用的内存模式而定,现今的微处理器会处理数个储存运算至写回内存(WB buffers),亦会处理数个储存运算至复合写入内存(WC buffers),以及处理若干个储存运算至其它形式的内存(STORE buffers)。详细提供不同形式的内存模式以及应用于现今微处理器系统所对应的内存属性已超过本发明的范围,但是已经足够表示现今微处理器能必须将储存运算公告至高速缓存/内存之前,寄存一定数量的储存运算,并且,为确保管线中指令的同调性,必须检查与所有未决储存运算的目标地址,以确定下一个欲提取的指令的地址与包含于储存目标寄存器226中的目标地址相同。该方框图200也描述储存阶段逻辑器204,其包括储存检查逻辑器210,该储存检查逻辑器210耦接至一微运算寄存器218以及一目标地址寄存器220。该储存检查逻辑器单元也耦接至若干指令指针寄存器228,指令指针寄存器228的数量与储存阶段204之前的管线阶段数量相等。
运算上,该未决储存目标侦测逻辑器208用于检测未决储存运算是否存在于内存的一目标地址,并且该目标地址是否与下一个欲提取的指令的内存位置相同。下一个欲提取的指令的虚拟地址撷取自下一次指令指针寄存器216,并与存在于所有储存目标寄存器226中的虚拟地址做比较,储存目标寄存器226的内容显示所有微处理器中的未决或同时储存运算。若一具有与下一次指令指针寄存器216相同虚拟地址的储存目标被侦测到,则该未决储存目标侦测逻辑器208宣告一拖延信号222至管线同步逻辑器206。响应于该拖延信号222的宣告,该同步逻辑器206拖延下一个指令的提取,直到管线中所有的活动完成(即管线闲置)。当该管线闲置时,该同步逻辑器206容许提取下一个指令。
由于微指令提供至储存阶段204,该储存检查逻辑器210撷取微运算寄存器218的内容以侦测一储存微指令,以及撷取该目标地址寄存器220的内容以存取该储存微指令虚拟目标地址。该指令指针寄存器228包含对应的程序指令的虚拟地址,该程序指令由该微处理器在储存阶段204之前的所有阶段所运算。当该储存检查逻辑器210侦测到一指令指针寄存器228的内容与该目标地址寄存器220的内容相同时,则表示不正确的指令正在管线中运算。该储存检查逻辑器210将此事件经由清除总线224而传送信号至同步逻辑器206,并根据特定的运算,该清除总线224的内容也可指示该不正确的指令在哪一个管线阶段中。因此,该同步逻辑器单元206命令该微处理器清除管线所有先前的阶段(或者,上推至所有与该不正确指令相关的阶段),并当管线闲置时再开始提取指令。
本发明观察到为了维持及求出储存目标寄存器226及指令指针寄存器228的内容,需要大量的逻辑器运算。在管线时序的每个循环中,这些寄存器226、228的内容必须做修正及求值。此外,本领域技术人员能了解,需要维持及求值的指令指针寄存器228的数量与微处理器中的管线阶段的数量成正比。本领域技术人员更能了解微处理器管线中管线阶段的数量的增加,也许是增加现今微处理器中管线的处理能力(throughput)最有效以及最普遍运用的技术。最后,本发明注意到表示于方框图200中的逻辑器运算在管线微处理器中除了与侦测及管理储存引发的指令不同调的外并没有作用。因此希望降低用于侦测及管理现今微处理器的储存引发指令不同调的逻辑器运算的数量。公知技术中的缺陷及限制由本发明所克服,将参照图3至图10。
请参阅图3,其为一方框图描述一本发明的微处理器300的特征,用于确保未决或同时储存运算时管线指令的同调性。如同图1中的微处理器100,本发明的微处理器300具有提取逻辑器302,其耦接至转译逻辑器304。该转译逻辑器304耦接至寄存逻辑器306。该寄存逻辑器306耦接至寻址逻辑器308。该寻址逻辑器308耦接至加载逻辑器310。该加载逻辑器310耦接至执行逻辑器312。该执行逻辑器312耦接至储存逻辑器314。该储存逻辑器314耦接至写回逻辑器316。该微处理器300具有一指令高速缓存318,经由一提取总线324耦接至提取逻辑器302。此外,该微处理器300具有一数据高速缓存320,经由一加载总线326耦接至该加载逻辑器310,并经由一储存总线328耦接至该储存逻辑器314。该指令高速缓存318以及该数据高速缓存320分别经由总线330及332耦接至一总线接口单元322。该总线接口单元322经由一内存总线334连接至系统内存(未图示)。
此外,该指令高速缓存318包括一指令转译后备缓冲器(instructiontranslation lookaside buffer,ITLB)336,经由总线338耦接至同步逻辑器340。该数据高速缓存320具有一数据转译后备缓冲器(data translationlookaside buffer,DTLB)344,经由总线342耦接至同步逻辑器340。该同步逻辑器输出一清除信号339以及一拖延信号341至管线同步逻辑器(未图标),该管线同步逻辑器大体上与图2的管线同步逻辑器206类似。
在运算中,该提取逻辑器302从系统内存中提取宏指令供微处理器300执行。该指令高速缓存318预测到哪一个字段的内存要做提取指令的存取,并先行将此字段储藏起来以便该提取逻辑器302可以在该指令高速缓存318中快速地做存取,而无须经由总线接口单元322及内存总线334做存取。提取的宏指令提供给转译逻辑器304,其将宏指令转译成相关的微指令序列供微处理器300的后续阶段306、308、310、312、314、316执行。该相关微指令序列中的每一微指令用以命令后续管线阶段306、308、310、312、314、316内的逻辑器运算执行后续的运算,来达成一对应的被提取宏指令所规范的架构运算。转译后的微指令提供至寄存逻辑器306。用于后续阶段308、310、312、314、316的后续运算的运算码从寄存逻辑器306中的寄存器(未图标)做存取。用于后续阶段308、310、312、314、316的次运算的运算码从寄存逻辑器306中的寄存器(未图标)存取。该寻址逻辑器308所使用的运算码来自寄存逻辑器306或来自由一所提供的微指令所产生内存位置的虚拟地址,因此这些特殊次运算中所需的运算码可从该寄存逻辑器306或该虚拟地址存取。所产生用于数据撷取次运算的地址提供至加载逻辑器310,该加载逻辑器310经由该数据高速缓存320从内存撷取运算码。该数据高速缓存320预测到哪一个字段的内存要做存取,而先行将此字段储藏起来,以便加载逻辑器310能快速地经由数据高速缓存320存取运算码,而不须经由总线接口单元322及内存总线334做存取。
如同先前的管线阶段302、304、306、308、310一般,该执行逻辑器312使用所提供的运算码(如果需要)以执行由微指令所规范的这些次运算。如果执行逻辑器312所执行这些次运算的结果需要被写入到系统内存中,则将这些结果提供至储存逻辑器314。该储存逻辑器314则执行将结果储存至内存位置的次运算。该储存逻辑器314亦耦接至数据高速缓存320,并最佳地执行储存运算至数据高速缓存320中的高速缓存位置,而不需将结果数据经由内存总线334写入。指定储存于架构寄存器的执行结果提供至写回逻辑器316。该写回逻辑器316将结果写入架构寄存器中。总而言之,将从内存中提取的宏指令转译成相关的微指令,然后这些相关的微指令同步于管线频率信号(未图标)的依序经过每个后续的逻辑器运算阶段306、308、310、312、314、316,使得指定的次运算可以如同装配在线的作业一般同时执行。
图3的方框图表示本发明的必要组件,为了清楚起见,从附图中省略了微处理器300中的许多逻辑器运算。本领域技术人员能了解微处理器300包括许多特定运算的阶段与逻辑器单元,为了简明起见,将其中的某些集合为一。例如,在本发明的一具体实施例中,该加载逻辑器单元310可以具体化为一高速缓存接口阶段,后面接着一高速缓存线校准阶段。而且,本领域技术人员能了解微处理器300中执行逻辑器312可包含多个平行执行单元,例如一整数单元、一浮点数单元以及一这些单元与其它特殊用途单元的组合。
为了侦测及管理本发明的该微处理器300的管线阶段302、304、306、308、310、312、314、316中的指令不同调,本发明在该二转译后备缓冲器336、344均提供逻辑器运算,用于指示一存储区是否可自由存取而无须检查管线中的同调调性。虽然未在图1及图2均未提及,本领域技术人员会了解现今微处理器300运用高速缓存318、320中的TLBs 336、334来高速缓存实体地址以及内存属性(例如,只读、复合写入)对应于常用虚拟地址所映像的实体地址页。例如,本领域技术人员可发现在ITLB 336中有一入口,该入口对应于提取逻辑器302所提供的下一个指令的虚拟地址。若此虚拟地址“命中”该ITLB 336,则所有地址转译查表(address translation table lookups)(例如页目录、页表等)均无须执行,该地址转译查表将虚拟地址转换成现今微处理器300中的实体地址。该内存页的实体地址(下一指令所驻存)已经连同其存储属性高速缓存至ITLB 336中。然而,若该虚拟地址“未中”该ITLB 336,则该地址转译查表必须被执行,以产生下一个指定的实体地址。此实体地址用于在指令高速缓存318中作为索引以决定下一个指令是否包含于其中。同样地,转译后的地址及与加载及储存运算相关的存储属性高速缓存于DTLB 344中。
本发明的一特征为ITLB 336及DTLB 344中的每一入口中提供额外的字段,该字段用以指示出一存储页中对应于每一入口的部分是否可以被自由存取,而无须检查该存储页部分中的指令同调性。在一实施例中,该存储页的部分为一页的1/4。对一提供4k位的存储页的虚拟地址的微处理器而言,本发明的一实施例表示对应的一存储页的1k位部分可以/不可以自由存取而无须检查指令的同调性。
在一容许选择性致动虚拟地址的微处理器的架构中,本发明的较佳实施例需要执行TLB查表以确保指令的同调性,即使是虚拟地址已经不作用。
为了在该提取逻辑器302到指令高速缓存318提取下一个指令时,侦测在指令提取时未决或同时的储存运算,该下一个指令指针(即,包含下一个欲提取的指令的内存位置的虚拟地址)经由总线324提供至指令高速缓存318中的ITLB 336。若该下一个指令指针指到ITLB336内,则对该额外字段做求值以决定对应于下一个指令的存储页部分可否自由存取。若该求值表示该存储页的部分可以自由存取,则提取下一个指令而无须检查管线中指令的同调性。若下一个指令指针不见了,或若该字段表示该存储页部分无法自由存取,则下一个指令的指针经由总线338被提供至该同步逻辑器340。
响应下一个指令指针的提供,该同步逻辑器340经由总线342命令DTLB344检查由DTLB 344中一对应的入口所指向的该存储页部份中指令的同调性。若DTLB入口中的字段表示这些指令不同调(即,一储存运算为未决或被同时执行至储存下一个指令的存储页),则该同步逻辑器340宣告拖延信号341,因此使微处理器拖延下一指令的提取,直到管线的后续阶段304、306、308、310、312、314、316已完成执行所有先前的指令(即,直到管线闲置且所有的储存作业已经传送)。
为了在储存逻辑器314执行储存微指令时侦测管线中指令的不同调,该储存微指令(其包括用于指定的储存运算的目标虚拟地址)经由总线328提供至数据高速缓存320中的DTLB 344。若该目标虚拟地址指向DTLB 344,所选择的DTLB入口的额外的字段会做求值,以决定对应于该目标虚拟地址的存储页的部分可否自由存取而无须检查该存储页的部分的指令同调性。若该求值表示该存储页的部分可自由作存取,则该储存运算被传送至数据高速缓存320中而无须进一步做检查。若该目标虚拟地址错误,或者是若该字段表示该存储页的部分无法自由做存取,则该目标虚拟地址经由总线342提供至同步逻辑器340。
响应下一个指令指针的提供,该同步逻辑器单元340经由总线338导命令ITLB 336检查由ITLB 336中一对应的入口所指向的该存储页部份中指令的同调性。若ITLB入口中的字段表示这些指令不同调(即,从一或多个储存运正被执行的存储页的部份撷取一或多个指令),则该同步逻辑器单元340宣告清除信号339,该清除信号339命令该微处理器清除先前的管线阶段并拖延下一指令的提取,直到管线闲置且所有的储存作业已经公告。
本发明使设计者利用管线微处理器中现存的TLB逻辑器,根据从该存储页部分所提取及储存的指令,以表示该部份存储页指令的同调性。利用加入部分存储页所有权字段至现存的TLB入口,该TLB入口可以部分存储页的储存梯度(granularity)表示一存储页的对应的部份是否可自由做存取。当一储存被公告至一存储页的一部份时,其对应的所有权字段设定成表示DTLB“拥有”该存储页的部分。当指令从一存储页的一部分提取时,其对应的所有权字段设定成表示ITLB“拥有”该存储页部分。该同步逻辑器340管理在ITLB336及DTLB344中的所有权字段。在一实施例中,对一存储页中相同部份的所有权的表示是排他的。即,若对应于特殊虚拟地址的入口驻于DTLB 344及ITLB 336,两个入口只有其中之一可表示拥有对应于该虚拟地址的存储页部分。在另一实施例中,两个入口都允许拥有一存储页的部分,但同调性基于该存储页是否为“脏”而定,详如下述。
请参阅图4,一方框图400描述图3的微处理器中的指令高速缓存318及数据高速缓存320的相互关系。该方框图400描述一由提取逻辑器(未图标)所提供的下一指令指针402。本发明的该下一指令指针402提供至指令高速缓存404。该指令高速缓存404经由一DSNOOP总线422耦接至同步逻辑器424。该同步逻辑器424经由一ISNOOP总线436耦接至数据高速缓存432。该指令高速缓存404包括指令高速缓存管理逻辑器(ICACHEMANAGER)406,经由总线420对指令转译后备缓冲器(ITLB)408做存取。该ITLB 408包括如上所述的数个入口410。在本发明的一实施例中,每一ITLB入口410也具有数个部分存储页的所有权字段412、414、416、418,这些所有权字段的内容表示与该TLB入口410相关的存储页的部分可自由地为提取指令而做存取,无须检查管线中指令的同调性。在该方框图400中,四个四分之一页所有权字段412、414、416、418用于表示TLB入口410,而以四分之一页的储存梯度完成储存引发指令的同调性管理。其它的实施例则借助对每一TLB入口410删除或增加所有权字段,而可使用单一页的储存梯度、半页的储存梯度、8分之一页的储存梯度、16分之一页的储存梯度以及32分之一页的储存梯度。
该方框图400亦描述本发明的一微指令的微运算字段428以及该微指令的相关目标地址字段430,这些字段由储存逻辑器(未图标)提供至一数据高速缓存432。该数据高速缓存404包括数据高速缓存管理逻辑器(DCACHEMANAGER)434,经由总线450对一数据转译后备缓冲器(DTLB)438做存取。该DTLB 438包括数个如上所述的入口440。在本发明的一实施例中,每一DTLB入口438也具有数个部分存储页的所有权字段442、444、446、448,这些所有权字段的内容表示与该TLB入口440相关的存储页的部分可自由地为提取指令而做存取,无须检查管线中指令的同调性。在该方框图400中,四个四分之一页所有权字段442、444、446、448用于表示TLB入口410,而以四分之一页的储存梯度完成储存引发指令的同调性管理。其它的实施例则借助对每一DTLB入口410删除或增加所有权字段,而可使用单一页的储存梯度、半页的储存梯度、8分之一页的储存梯度、16分之一页的储存梯度以及32分之一页的储存梯度。
在运算上,两对应的所有权位412、442;414、444;416、446;418、448在两对应的ITLB及DTLB入口410、440的状态为排他的。即,若非指令高速缓存404即是数据高速缓存432可拥有一虚拟存储页的一部分,但并非两者可同时拥有。当提供一下一指令指针寄存器(NIP)402至该指令高速缓存404用于提取指令时,该指令高速缓存管理逻辑器406对其对应的TLB入口410及所有权位412、414、416或418做存取(所存取的特殊的部分存储页所有权位412、414、416或418为NIP 402的低阶地址的函数,表示下一指令储存于该存储页的那一部分。)若该NIP 402“命中”ITLB 408,且若其部分存储页所有权位412、414、416或418表示该指令高速缓存404拥有该存储页的部分,则该指令被提取而无须检查同调性。若该NIP 402“未中”,或若命中但未显示拥有指令高速缓存所有权,则该NIP 402经由DSNOOP总线422被提供至该同步逻辑器424。随后,该同步逻辑器424经由ISNOOP总线436提供该NIP 402至数据高速缓存管理逻辑器434而在DTLB 438中搜寻部分存储页的所有权。在数据高速缓存432中,该数据高速缓存管理逻辑器434对该TLB入口440以及对应于所提供的NIP 402的所有权位442、444、446或448做存取。(如ITLB 408所述,所存取的特殊的部分存储页所有权位412、414、416或418为NIP 402的低阶地址的函数,表示下一指令储存于该存储页的那一部分。)若该NIP 402命中DTLB 438内,且若其部分页的所有权位442、444、446或448表示数据高速缓存432拥有该存储页的部分,则该同步逻辑器424单位借助宣告拖延信号(STALL)426,使微处理器延迟提取指令,并等到其管线闲置及储存运算完成。此外,该同步逻辑器424使数据高速缓存管理逻辑器434经由总线436释放部份存储页的所有权并借助改变对应的所有权字段442、444、446或448的值而表示该释放。同样地,该同步逻辑器424使指令高速缓存管理逻辑器406经由总线422建立该部分存储页的所有权,并借助改变对应的所有权字段412、414、416或418的值而表示该建立。在本发明的一实施例中,若一NIP 402错失ITLB 408并命中DTLB 438,不论DTLB的所有权表示与否,对应于NIP 402的DTLB入口440由该同步逻辑器424经由监视总线436、422复制到ITLB 408的配对入口410,避免地址转译查表程序(即,存储页表走势)。
当对应于一储存微运算428的目标地址430被提供至该数据高速缓存432,该数据高速缓存管理逻辑器434对与其对应的TLB入口440及所有权位442、444、446或448做存取(所存取的特殊的部分存储页所有权位412、414、416或418为NIP 402的低阶地址的函数,表示该存储页的那一部分需被储存)。若该目标地址430命中DTLB 438,且若其所有权位442、444、446或448表示该数据高速缓存432拥有该存储页的部分,则该储存被公告而无须做同调性检查。若该目标地址430错失,或者是若命中但数据高速缓存所有权未表示,则该目标地址430经由ISNOOP总线436被提供至同步逻辑器424。随后,该同步逻辑器424经由DSNOOP总线422提供该目标地址430至指令高速缓存管理逻辑器406,在ITLB 408中搜寻部分存储页的所有权。在该指令高速缓存404中,该指令高速缓存管理逻辑器406对TLB入口410及对应于所提供的目标地址430的所有权位412、414、416或418做存取。(如ITLB 408所述,所存取的特殊的部分存储页所有权位412、414、416或418为ITLB 408的低阶地址位的函数,表示该存储页的那一部分的未决储存要被公告)。若该目标地址430命中ITLB 408内,且若其部分存储页的所有权位412、414、416或418表示该指令高速缓存404拥有该存储页的部分,则该同步逻辑器424借助宣告清除信号(FLUSH)425,使该微处理器从先前指令的管线阶段清除该先前的指令,并延迟提取指令直到管线闲置且储存运算完成。此外,该同步逻辑器424使指令高速缓存管理逻辑器406经由总线422释放部份存储页的所有权并借助改变对应的所有权字段412、414、416或418的值而表示该释放。同样地,该同步逻辑器424使指令高速缓存管理逻辑器406经由总线422建立该部分存储页的所有权,并借助改变对应的所有权字段442、444、446或448的值而表示该建立。在本发明的一实施例中,若一目标地址430错失DTLB 438并命中ITLB 408,不论ITLB的所有权表示与否,对应于目标地址430的ITLB入口410由该同步逻辑器424经由监视总线436、422复制到DTLB 438的配对入口440,避免地址转译查表程序(即,存储页表走势)。
请参阅图5,一方框图表示本发明的高速缓存管理逻辑器500。该高速缓存管理逻辑器500描述图4的指令高速缓存管理逻辑器406或数据高速缓存管理逻辑器434的配置。该高速缓存管理逻辑器单元500包括TLB存取逻辑器502,该TLB存取逻辑器502经由存出总线512耦接至监视逻辑器(snoop logic)504,且经由存入总线514耦接至抓取逻辑器(snarf logic)506。该监视及抓取逻辑器504、506经由一监视总线516耦接至同步逻辑器(未图标)。一虚拟地址(对应于下一指令指针或储存目标地址两者其中之一)经由总线510提供至TLB存取逻辑器502。为了说明起见,图5显示一32位的地址总线510,本发明也可包含其它的虚拟地址空间如16位、64位、128位及256位的寻址法则。该总线510也经过监视逻辑器504。虚拟地址ADDR 31:12的上位(upper bit)提供至一转译后备缓冲器以经由一数据入口总线(ENTRY DATA)取回一对应的TLB入口。
运算上,当一虚拟地址被提供至高速缓存管理逻辑器500,该TLB存取逻辑器502将ADDR 31:12的上位送至TLB,以决定是否一入口存在于该TLB(即,命中)。若是,则该入口及其所有权位被复制到存取逻辑器502的入口缓冲器508。为了说明起见,该方框图显示传送一地址位ADDR 31:12至TLB,藉以表示一4KB虚拟页,然而本发明指出本发明也可应用至其它大小的虚拟页,包括1-KB、8-KB、16KB等。使用虚拟地址的低阶位(此例中为位11:10),该TLB存取逻辑器502对一对应的所有权字段QP3、QP2、QP1或QP0做求值,以决定一虚拟存储页相关的部分可否自由存取而无须在配对的TLB中搜寻所有权。若所有权未表示,或若该虚拟地址全部错失,则该监视逻辑器504单元将虚拟地址传送至同步逻辑器(未图标),经由该监视总线516监视其它的TLB。若其它TLB入口的状态表示其入口欲复制至该TLB存取逻辑器,则该入口经由该监视总线516通过该抓取逻辑器单元506,并经由存入总线514提供至该TLB存取逻辑器。若从该高速缓存管理逻辑器从其配对部分经由监视总线启动监视,则该抓取逻辑器单元506将该所提供的虚拟地址经由该存入总线514传送至TLB存取逻辑器502。在该对应的TLB入口的回复及检查时,若表示该TLB入口欲复制到配对的TLB,则该TLB入口经由总线存出512通过监视逻辑器单元504提供至该监视总线516。该TLB存取逻辑器单元502由该同步逻辑器单元导引改变所有权字段QP3-QP0的状态。
请参阅图6,其为一表格600用以描述同步动作,该同步动作响应于本发明的未决储存的运算,以确保一管线中指令的同调性。如前图3至图5所示,若提供至DTLB的一目标地址命中DTLB,且若该DTLB拥有一存储页的部分,并且对该存储页的部分的储存运算为未决,则该储存可被完成而无须检查管线中指令的同调性。若该DTLB命中但并不拥有该部份存储页的所有权,则监视该ITLB。若该ITLB命中,并且拥有该部份存储页的所有权,则清除该管线并拖延直到该储存运算完成且该管线为闲置。该ITLB中的所有权位设定用于表示该ITLB不再拥有该部分存储页,而该DTLB中对应的所有权位设定于表示该DTLB现在拥有该部分存储页。若该TILB的监视命中但所有权未表示,该DTLB表示部分存储页的所有权且完成该储存运算。若该DTLB错失,则启动一ITLB监视。在一ITLB监视命中时,其TLB入口被复制至DTLB。若该ITLB表示该部分存储页的所有权,则清除该管线并拖延直到其闲置。在ITLB中的所有权位设定于表示该ITLB不再拥有该部分存储页,且该DTLB中对应的所有权位设定成表示该DTLB现在拥有该部分存储页。若该ITLB入口不表示所有权,则该DTLB入口设定成表示部分存储页的所有权,且该储存运算使用实体地址及复制到该ITLB的属性信息来完成。
请参阅图7,其为一表格700用以描述同步动作,该同步动作在本发明中提取下一个指令前执行以确保管线中指令的同调性。若用于下一指令的虚拟地址被提供至一ITLB且命中该ITLB,且若该ITLB拥有储存将用以储存下一指令的部分存储页,则可完成指令的提取而无须检查管线中指令的同调性。若该ITLB命中但未拥有该部分存储页的所有权,则该DTLB被监视。若该DTLB命中且拥有该部分存储页的所有权,则该管线拖延直到该储存运算完成且该管线闲置。当该管线闲置时,则提取下一指令。该DTLB中的所有权位设定成表示该DTLB不再拥有该部分存储页,而ITLB中对应的所有权位则表示该ITLB拥有该部分存储页。若该DTLB监视命中但未表示所有权,该ITLB表示部分存储页的所有权并提取该指令。若该ITLB错失,一DTLB的监视被启动。在一DTLB监视命中时,其TLB入口被复制到该ITLB。若该DTLB表示该部分存储页的所有权,则该管线拖延直到其闲置。当该管线闲置,则提取下一个指令。该DTLB中的所有权位设定成表示表示该DTLB不再拥有该部分存储页,而ITLB中对应的所有权位则表示该ITLB拥有该部分存储页。若该DTLB入口不表示所有权,则该ITLB入口设定成表示部分存储页的所有权并使用实体地址及复制到该DTLB的属性信息以完成提取下一指令。
请参阅图8,一方框图表示本发明的高速缓存管理逻辑器800的另一实施例。该高速缓存管理逻辑器800的另一实施例包括运算状态大体上与图5的高速缓存管理逻辑器500中的数个组件类似的组件。相反地,对于图5中的高速缓存管理逻辑器500,该高速缓存管理逻辑器单元800的该另一实施例对应的部分存储页字段QP3-QP0的状态无须仅在指令高速缓存与数据高速缓存之间择一。如上所示,指令高速缓存及数据高速缓存均可表示相对于所提供的虚拟地址的该存储页的部分的所有权。这使数据高速缓存的读取不影响指令的提取。若对数据高速缓存做读取,该DTLB存取逻辑器单元802建立该对应的存储页的所有权,但同步逻辑器单元不需要该指令高速缓存释放所有权。因此,若该对应的存储页的部分发生指令提取,该指令的提取可完成而无须监视DTLB。既然该指令及数据高速缓存皆可拥有一存储页的一特殊部分的所有权,本发明需要DTLB存取逻辑器802决定存取TLB入口字段801中的脏位(dirty bit)803的状态,在来自指令高速缓存的一DTLB监视中,若一储存运算等待执行或已经传送至该存储页的部分,或者是若仅读取运算已经被传送至该存储页的部分,则继续进行指令提取而无须拖延该管线。本领域技术人员了解该脏位803为MESI高速缓存线状态指示器其中之一,普遍用来指示高速缓存入口的内容已经被修改,但尚未传送至内存。虽然脏位803表示成TLB入口801的一部份,本领域技术人员知道该脏位也指定在高速缓存内储存的位准,传统上在高速缓存线位准。图9、图10根据高速缓存管理逻辑器800的另一实施例更详细地讨论管线的同步。
请参阅图9,其为一表格900用以描述详细的同步动作,该同步动作响应于根据图8的另一实施例800的未决储存运算,以确保管线中指令的同调性。根据该另一实施例800,若一提供至DTLB的目标地址命中DTLB,且若该DTLB拥有该储存运算等待执行的该存储页的部分,且若该存储页需修改(或与该目标地址相关的该特殊高速缓存线需修改),则完成该储存运算而无须检查管线中的指令同调性。若目标地址命中该DTLB,且若该DTLB拥有未决执行储存运算的该存储页部分的所有权,且若该存储页(或对应的高速缓存线)无须修改,则该ITLB必须被监视。在一ILTB监视命中所有权,该管线必须被清除且指令的提取被拖延直到该管线闲置且该储存运算已经传送。此外,ITLB中的所有权位设定成表示ITLB不再拥有该存储页。在ITLB监视未命中所有权时,该储存运算被传送。若该DTLB命中但未拥有该部分存储页的所有权,则该ITLB被监视。若ITLB命中并拥有该存储页的所有权,则该管线被清除并拖延直到该储存运算完成且该管线被闲置。此外,ITLB中的所有权位设定成表示该ITLB不再拥有该份存储页的所有权且DTLB中对应的所有权位设定成表示DTLB拥有该部分页。若该ITLB的监视命中但未表示所有权,则该DTLB表示该部分存储页的所有权且完成储存。若该DTLB错失,则启动ITLB监视。在ITLB监视命中时,其ITLB入口复制到DTLB。若该ITLB表示该部分存储页的所有权,则该管线被清除且拖延直到闲置,包括传送该储存。此外,ITLB中的所有权位设定成表示该ITLB不再拥有该份存储页的所有权且DTLB中对应的所有权位设定成表示DTLB拥有该部分页。若该ITLB入口不表示所有权,则该DTLB入口设定成表示该部分存储页的所有权,且完成该储存使用该实体地址及复制到ITLB的属性信息。
图10为一表格,用以描述同步动作,在提取根据图8的该另一实施例800的下一指令前执行,以确保管线中指令的同调性。若该下一指令的虚拟地址(提供至一ITLB)命中该ITLB,且若该ITLB拥有下一指令储存于其中的部分存储页,则完成该指令的提取而无须检查管线中指令的同调性。若该ITLB命中但不拥有该部分存储页的所有权,则该DTLB被监视。若该DTLB的监视命中且该对应的存储页(或高速缓存线,若高速缓存线储存梯度提供于MESI状态)需要修改,则该管线被拖延直到完成该储存且该管线为闲置。当管线闲置时,提取下一指令。若该DTLB的监视命中但对应的存储页(或高速缓存线)无须修改,则该ITLB表示部分存储页的所有权并提取该指令。若该ITLB错失,则启动一DTLB监视。在一DTLB命中时,其TLB入口复制到该ITLB。若对数据高速缓存的监视表示该对应的存储页的部分(即,存储页或高速缓存线的部分)需要修改,则该管线被拖延直到其闲置。当该管线为闲置,则提取下一指令。若该数据高速缓存的监视表示该部分存储页(或高速缓存线)无须修正,则下一指令被提取使用该实体地址及复制到DTLB的属性信息。
虽然本发明及其目的、特征及优点已详细地揭示,其它实施例也包含于本发明中。例如,本发明为了图示方便,以分离的指令高速缓存以及数据高速缓存做讨论,但是本发明的发明者表示本发明也可包括复合的高速缓存结构。TLB入口可共享且附加的字段可表示一指令路径或一数据路径中的所有权。
此外,本发明以一管线的特殊阶段(提取、转译等)做说明。这些名称与集合于此处用以清楚地揭示,而非暗示管线的结构。本发明可用于具有任意数量的现今的管线结构,包括具有紊乱微指令的子集合。
以上的说明,在特定实施例及其必要条件的脉络下而提供,可使一般本领域技术人员能够利用本发明。然而,各种对该较佳实施例所作的修改,对本领域技术人员而言显而易见,并且,在此所讨论的一般原理,亦可应用至其它实施例。因此,本发明并不限于此处所展出与叙述的特定实施例,而是具有与此处所揭示的原理与新颖特征相符的最大范围。本领域技术人员可以用所揭示的概念及特定的实施例为基础来设计或改进其它的结构以实现与本发明相同的目的。

Claims (27)

1、一种管线微处理器中的装置,用于确保该管线微处理器的阶段中指令的同调性,该装置包括:
一指令高速缓存管理逻辑器,组态成接收对应于一下一指令的一地址,并侦测对应于该下一指令的一存储页的一部份可否可自由做存取,而无须检查该存储页该部分中指令的同调性,且若必须检查同调性时,提供该地址;以及
同步逻辑器,组态成从该指令高速缓存管理逻辑器接收该地址,并命令一数据高速缓存管理逻辑器检查该存储页的该部分中指令的同调性,且若该指令与该存储页该部分不同调,则该同步逻辑器单元命令该管线微处理器拖延下一指令的提取,直到该管线微处理器的该阶段已执行所有先前的指令。
2、根据权利要求1所述的装置,其中该指令高速缓存管理逻辑器对对应于该地址的指令转译后备缓冲器的入口求值,以侦测该存储页部分是否无法被自由存取。
3、根据权利要求2所述的装置,其中上述指令转译后备缓冲器的入口对应该存储页,并且包括数个部分存储页所有权位。
4、根据权利要求3所述的装置,其中该数个部分存储页所有权位其中之一对应于该存储页的该部分,其余该数个部分存储页所有权位对应于该存储页的其余部分。
5、根据权利要求4所述的装置,其中该存储页的该部分的存取至少包含下列可能方式:该存储页的该部分可被自由存取,若该对应于该存储页的该部分的该部分存储页所有权位已被设定;该存储页的该部分无法自由存取,若该对应于该存储页的该部分的该部分存储页所有权位未被设定。
6、根据权利要求1所述的装置,其中上述数据高速缓存管理逻辑器对对应于上述地址的数据转译后备缓冲器的入口求值,以侦测该指令是否与该存储页的该部分同调。
7、根据权利要求6所述的装置,其中上述数据转译后备缓冲器的入口对应该存储页,并且包括数个部分存储页所有权位。
8、根据权利要求7所述的装置,其中该数个部分存储页所有权位其中之一对应于该存储页的该部分,其余该数个部分存储页所有权位对应于该存储页的其余部分。
9、根据权利要求8所述的装置,其中该指令与该存储页的关系至少包含下列可能方式:该指令与该存储页的该部分不同调,若该对应于该存储页的该部分的该部分存储页所有权位已被设定;该指令与该存储页的该部分同调,若该对应于该存储页的该部分的该部分存储页所有权位未被设定。
10、一种管线微处理器中的装置,用于确保该管线微处理器的阶段中指令的同调性,该装置包括:
一数据高速缓存管理逻辑器单元,组态成接收对应一未决的储存指令的一地址,并侦测对应于该储存指令的一存储页的一部份可否自由做存取,而无须检查该存储页的该部分中指令的同调性,且若必须检查同调性时,提供该地址;以及
同步逻辑器,组态成从该数据高速缓存管理逻辑器接收该地址,并命令一指令高速缓存管理逻辑器检查该存储页的该部分中指令的同调性,且若该指令与该存储页该部分不同调,则该同步逻辑器命令该管线微处理器清除该管线微处理器的先前阶段。
11、根据权利要求10所述的装置,其中上述数据高速缓存管理逻辑器对对应于该地址的一指令转译后备缓冲器的入口求值,以侦测该存储页的该部分是否无法做自由存取。
12、根据权利要求11所述的装置,其中该指令转译后备缓冲器的入口对应该存储页,并且包括数个部分存储页所有权位。
13、根据权利要求12所述的装置,其中该数个部分存储页所有权位其中之一对应于该存储页的该部分,其余该数个部分存储页所有权位对应于该存储页的其余部分。
14、根据权利要求13所述的装置,其中该存储页的该部分的存取至少包含下列可能方式:该存储页的该部分可被自由存取,若该对应于该存储页的该部分的该部分存储页所有权位已被设定;存储页的该部分无法自由存取,若该对应于该存储页的该部分的该部分存储页所有权位未被设定。
15、根据权利要求10所述的装置,其中该指令高速缓存管理逻辑器对对应于该地址的一数据转译后备缓冲器的入口求值,以侦测该指令是否与该存储页的该部分同调。
16、根据权利要求15所述的装置,其中上述数据转译后备缓冲器的入口对应该存储页,并且包括数个部分存储页所有权位。
17、根据权利要求16所述的装置,其中该数个部分存储页所有权位其中之一对应于该存储页的该部分,其余该数个部分存储页所有权位对应于该存储页的其余部分。
18、根据权利要求17所述的装置,其中该指令与该存储页的该部分不同调,若该对应于该存储页的该部分的该部分存储页所有权位已被设定。
19、一种管线微处理器的方法,用于确保该管线微处理器的阶段中指令的同调性,该方法包括下列步骤:
在一数据高速缓存中,侦测对应于一未决储存指令的一存储页的一部分可自由做存取,而无须检查该存储页该部分中指令的同调性;
命令一指令高速缓存中的逻辑器检查该存储页的该部分中指令的同调性;
若该指令不同调,则清除该管线微处理器的先前阶段。
20、根据权利要求19所述的方法,其中该侦测步骤包括:
对一数据转译后备缓冲器入口做求值,该入口对应于用于该未决储存指令的一目标地址。
21、根据权利要求20所述的方法,其中该数据转译后备缓冲器入口对应该存储页,并且包括数个部分存储页所有权位。
22、根据权利要求21所述的方法,其中该数个部分存储页所有权位其中之一对应于该存储页的该部分,其余该数个部分存储页所有权位对应于该存储页的其余部分。
23、根据权利要求22所述的方法,其中该存储页的该部分的存取至少包含下列可能方式:该存储页的该部分可被自由存取,若该对应于该存储页的该部分的该部分存储页所有权位已被设定;该存储页的该部分无法自由存取,若该对应于该存储页的该部分的该部分存储页所有权位未被设定。
24、根据权利要求19所述的方法,其中该命令步骤包括:
对一指令转译后备缓冲器入口做求值,该入口对应于用于该未决储存指令的一目标地址。
25、根据权利要求24所述的方法,其中该指令转译后备缓冲器入口对应于该存储页,并且包括数个部分存储页所有权位。
26、根据权利要求25所述的方法,其中该数个部分存储页所有权位其中之一对应于该存储页的该部分,其余数个部分存储页所有权位对应于该存储页的其余部分。
27、根据权利要求26所述的方法,其中该指令与该存储页的该部分不同调,若该对应于该存储页的该部分的该部分存储页所有权位已被设定。
CNA2004100560993A 2003-09-19 2004-08-16 储存引发指令同调性的装置及方法 Pending CN1560736A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/665,171 2003-09-19
US10/665,171 US7263585B2 (en) 2002-09-19 2003-09-19 Store-induced instruction coherency mechanism

Publications (1)

Publication Number Publication Date
CN1560736A true CN1560736A (zh) 2005-01-05

Family

ID=34194761

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2004100560993A Pending CN1560736A (zh) 2003-09-19 2004-08-16 储存引发指令同调性的装置及方法

Country Status (4)

Country Link
US (1) US7263585B2 (zh)
EP (1) EP1517232B1 (zh)
CN (1) CN1560736A (zh)
TW (1) TWI262438B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101034469B (zh) * 2005-10-26 2010-05-12 威盛电子股份有限公司 图形处理单元管线同步及控制系统和方法
CN101395674B (zh) * 2006-03-03 2013-07-24 高通股份有限公司 用于测试用于数据存储装置的数据导引逻辑的方法和设备
WO2014139466A3 (en) * 2013-03-15 2015-08-27 Shanghai Xinhao Microelectronics Co. Ltd. Data cache system and method
CN105975405A (zh) * 2015-05-21 2016-09-28 上海兆芯集成电路有限公司 处理器和使处理器进行工作的方法

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8621179B2 (en) * 2004-06-18 2013-12-31 Intel Corporation Method and system for partial evaluation of virtual address translations in a simulator
GB0513375D0 (en) 2005-06-30 2005-08-03 Retento Ltd Computer security
US7360022B2 (en) * 2005-12-29 2008-04-15 Intel Corporation Synchronizing an instruction cache and a data cache on demand
US8683143B2 (en) * 2005-12-30 2014-03-25 Intel Corporation Unbounded transactional memory systems
US8180977B2 (en) * 2006-03-30 2012-05-15 Intel Corporation Transactional memory in out-of-order processors
US8180967B2 (en) * 2006-03-30 2012-05-15 Intel Corporation Transactional memory virtualization
US8479174B2 (en) * 2006-04-05 2013-07-02 Prevx Limited Method, computer program and computer for analyzing an executable computer file
US7945761B2 (en) * 2006-11-21 2011-05-17 Vmware, Inc. Maintaining validity of cached address mappings
US7937561B2 (en) * 2008-04-03 2011-05-03 Via Technologies, Inc. Merge microinstruction for minimizing source dependencies in out-of-order execution microprocessor with variable data size macroarchitecture
US9413721B2 (en) 2011-02-15 2016-08-09 Webroot Inc. Methods and apparatus for dealing with malware
US9804969B2 (en) * 2012-12-20 2017-10-31 Qualcomm Incorporated Speculative addressing using a virtual address-to-physical address page crossing buffer
US9747212B2 (en) * 2013-03-15 2017-08-29 International Business Machines Corporation Virtual unifed instruction and data caches including storing program instructions and memory address in CAM indicated by store instruction containing bit directly indicating self modifying code
US9824012B2 (en) * 2015-09-24 2017-11-21 Qualcomm Incorporated Providing coherent merging of committed store queue entries in unordered store queues of block-based computer processors
US10740167B2 (en) * 2016-12-07 2020-08-11 Electronics And Telecommunications Research Institute Multi-core processor and cache management method thereof
KR102376396B1 (ko) * 2016-12-07 2022-03-21 한국전자통신연구원 멀티 코어 프로세서 및 그것의 캐시 관리 방법
KR102377729B1 (ko) * 2016-12-08 2022-03-24 한국전자통신연구원 멀티 코어 프로세서 및 그것의 동작 방법
US10706150B2 (en) * 2017-12-13 2020-07-07 Paypal, Inc. Detecting malicious software by inspecting table look-aside buffers

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835949A (en) * 1994-12-27 1998-11-10 National Semiconductor Corporation Method of identifying and self-modifying code
US5742791A (en) 1996-02-14 1998-04-21 Advanced Micro Devices, Inc. Apparatus for detecting updates to instructions which are within an instruction processing pipeline of a microprocessor
US5930821A (en) * 1997-05-12 1999-07-27 Integrated Device Technology, Inc. Method and apparatus for shared cache lines in split data/code caches
US6164840A (en) * 1997-06-24 2000-12-26 Sun Microsystems, Inc. Ensuring consistency of an instruction cache with a store cache check and an execution blocking flush instruction in an instruction queue
US6460119B1 (en) * 1997-12-29 2002-10-01 Intel Corporation Snoop blocking for cache coherency
US6405307B1 (en) * 1998-06-02 2002-06-11 Intel Corporation Apparatus and method for detecting and handling self-modifying code conflicts in an instruction fetch pipeline
US6594734B1 (en) 1999-12-20 2003-07-15 Intel Corporation Method and apparatus for self modifying code detection using a translation lookaside buffer
US6848032B2 (en) * 2002-09-27 2005-01-25 Apple Computer, Inc. Pipelining cache-coherence operations in a shared-memory multiprocessing system

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101034469B (zh) * 2005-10-26 2010-05-12 威盛电子股份有限公司 图形处理单元管线同步及控制系统和方法
CN101395674B (zh) * 2006-03-03 2013-07-24 高通股份有限公司 用于测试用于数据存储装置的数据导引逻辑的方法和设备
WO2014139466A3 (en) * 2013-03-15 2015-08-27 Shanghai Xinhao Microelectronics Co. Ltd. Data cache system and method
US9785443B2 (en) 2013-03-15 2017-10-10 Shanghai Xinhao Microelectronics Co. Ltd. Data cache system and method
CN105975405A (zh) * 2015-05-21 2016-09-28 上海兆芯集成电路有限公司 处理器和使处理器进行工作的方法

Also Published As

Publication number Publication date
EP1517232B1 (en) 2016-03-23
EP1517232A3 (en) 2007-11-14
EP1517232A2 (en) 2005-03-23
US7263585B2 (en) 2007-08-28
TW200512650A (en) 2005-04-01
TWI262438B (en) 2006-09-21
US20040068618A1 (en) 2004-04-08

Similar Documents

Publication Publication Date Title
CN1560736A (zh) 储存引发指令同调性的装置及方法
US9116817B2 (en) Pointer chasing prediction
US6412057B1 (en) Microprocessor with virtual-to-physical address translation using flags
JP5108002B2 (ja) 物理タグ付け動作を用いる仮想タグ付き命令キャッシュ
JP5506049B2 (ja) 部分的なエミュレーション環境におけるソース命令セットアーキテクチャ(isa)コードから、変換済みコードへの遷移
CN1315060C (zh) 储存存储器型式数据的转译旁视缓冲器
US8364933B2 (en) Software assisted translation lookaside buffer search mechanism
EP2542973B1 (en) Gpu support for garbage collection
US20150121046A1 (en) Ordering and bandwidth improvements for load and store unit and data cache
US9009445B2 (en) Memory management unit speculative hardware table walk scheme
US8190652B2 (en) Achieving coherence between dynamically optimized code and original code
KR102531261B1 (ko) 캐시 메인터넌스 명령
US9131899B2 (en) Efficient handling of misaligned loads and stores
CN1690952A (zh) 根据多组高速缓存组预测来选择执行的指令的装置和方法
US9632776B2 (en) Preload instruction control
KR20120070584A (ko) 데이터 스트림에 대한 저장 인식 프리페치
KR102268601B1 (ko) 데이터 포워딩을 위한 프로세서, 그것의 동작 방법 및 그것을 포함하는 시스템
US20090006812A1 (en) Method and Apparatus for Accessing a Cache With an Effective Address
US9104593B2 (en) Filtering requests for a translation lookaside buffer
US9009413B2 (en) Method and apparatus to implement lazy flush in a virtually tagged cache memory
EP3454219A1 (en) An apparatus and method for efficient utilisation of an address translation cache
Whitham et al. Implementing time-predictable load and store operations
US8688961B2 (en) Managing migration of a prefetch stream from one processor core to another processor core
US20100100702A1 (en) Arithmetic processing apparatus, TLB control method, and information processing apparatus
US6820254B2 (en) Method and system for optimizing code using an optimizing coprocessor

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication