国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      運(yùn)算處理裝置、處理器、程序轉(zhuǎn)換裝置以及程序的制作方法

      文檔序號(hào):6467766閱讀:210來(lái)源:國(guó)知局
      專利名稱:運(yùn)算處理裝置、處理器、程序轉(zhuǎn)換裝置以及程序的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及以同一周期能夠執(zhí)行多個(gè)指令的運(yùn)算處理裝置,尤其涉及 有效適用于多線程化的處理器與硬件加速器高效率地同步的情況的技術(shù)。
      背景技術(shù)
      最近,不僅通過(guò)超流水線技術(shù),而且還通過(guò)超標(biāo)量(super scalar)或多 處理器、以及多線程體系結(jié)構(gòu)等處理器的并列技術(shù)來(lái)提高處理性能。另一 方面,對(duì)硬件加速器、或來(lái)自程序的請(qǐng)求,應(yīng)該在一定的時(shí)間內(nèi)確實(shí)結(jié)束 處理的實(shí)時(shí)處理的要求也越來(lái)越高。
      專利文獻(xiàn)1 :(日本)特開(kāi)平9-54693號(hào)公報(bào)(圖1)
      專利文獻(xiàn)2 :(日本)特開(kāi)2003-271399號(hào)公報(bào)(圖1)
      專利文獻(xiàn)3 :美國(guó)特許第5958044號(hào)說(shuō)明書(shū)(圖1)
      非專禾[J文獻(xiàn) 1 : John L. Hennessy & David A. Patterson "Computer Architecture A Quantitative Approach Fourth Edition" 2006(P.172 Chapter Three Limits in Instruction-Level Parallelism)
      然而,對(duì)于伴隨向硬件加速器的訪問(wèn)的實(shí)時(shí)處理,適用所述并列技術(shù) 的處理器不具有容易保障實(shí)時(shí)處理性能的機(jī)構(gòu)。因此,在試圖保障實(shí)時(shí)處 理性能的情況下,需要具有充分的性能的處理器,或需要可以執(zhí)行還設(shè)想 到本來(lái)發(fā)生頻率低的最壞情況(處理器負(fù)載、存儲(chǔ)器訪問(wèn)競(jìng)爭(zhēng)、或其它的流 水線沖突(pipelinehazard))的有效性能的估計(jì)的處理器。例如,對(duì)于以裝 入/保存訪問(wèn)的流水線推遲來(lái)等待實(shí)時(shí)處理完成的方法,由于可以與向硬件 加速器的訪問(wèn)同步,因此可以保障以最短時(shí)間的工作,但是,由于對(duì)流水 線控制需要互鎖機(jī)構(gòu),因此在具有高速化了的超流水線機(jī)構(gòu)的處理器的微 架構(gòu)(Microarchitecture)中產(chǎn)生與高速傳遞有關(guān)的安裝上的問(wèn)題。并且, 對(duì)于以中斷或Coarse- Grained Multithreading(CGMT :粗粒度多線程) 機(jī)構(gòu)(參照,專利文獻(xiàn)2等)來(lái)與向硬件加速器的訪問(wèn)同步的方法,由于當(dāng)前的處理的切換的系統(tǒng)開(kāi)銷(xiāo)(overhead)的粒度較大,因此作為在處理器以幾 周期到幾十周期的粒度來(lái)實(shí)現(xiàn)定時(shí)(同步)的機(jī)構(gòu),從實(shí)時(shí)處理的最壞情況保 障的觀點(diǎn)來(lái)看存在問(wèn)題。最后,對(duì)于以分支指令、裝入/保存訪問(wèn)的流水線 重新開(kāi)始的執(zhí)行、或插入NOP指令來(lái)調(diào)整定時(shí)的方法,適于以最細(xì)粒度來(lái) 可以實(shí)現(xiàn)定時(shí)(同步)的機(jī)構(gòu)。但是,需要增加NOP指令數(shù)、或按照工作頻 率變更指令碼,另外,對(duì)于以超流水線級(jí)具有Simultaneous Multithreading(SMT :同時(shí)多線程)機(jī)構(gòu)的處理器存在的問(wèn)題是,即使根 據(jù)該分支指令、重新開(kāi)始執(zhí)行、NOP指令的插入,在設(shè)想最壞情況的情況 下,也難以調(diào)整該細(xì)粒度。對(duì)于與NOP指令數(shù)的增加有關(guān)的第一問(wèn)題,若 利用專利文獻(xiàn)3的機(jī)構(gòu),則可以減少指令碼大小,但是,對(duì)于第二問(wèn)題, 需要對(duì)工作頻率的指令碼變更,以軟件的錯(cuò)誤(bug汰檢測(cè)該變更的遺漏是 非常困難的,因此還存在問(wèn)題。對(duì)于以超流水線級(jí)具有SMT機(jī)構(gòu)的處理器 的第一問(wèn)題,由于以要執(zhí)行盡量多的指令的想法來(lái)工作,因此需要將設(shè)想 到盡量多的指令被執(zhí)行的情況的NOP指令數(shù)插入。即,在以SMT執(zhí)行的 情況下,有其它線程的指令流被執(zhí)行的情況,也有按每個(gè)周期本線程的指 令流不被執(zhí)行的情況,因此根據(jù)估計(jì)最壞情況的NOP指令數(shù),產(chǎn)生諸如實(shí) 時(shí)過(guò)長(zhǎng)之類(lèi)的調(diào)整粒度的問(wèn)題。
      如上所述,在以超流水線來(lái)多線程化的處理器向硬件加速器訪問(wèn)的情 況下,需要考慮以細(xì)粒度的期間(周期單位)的、以最短周期來(lái)可以保障指令 的執(zhí)行的實(shí)時(shí)的方法。

      發(fā)明內(nèi)容
      本發(fā)明的目的在于提供具有多線程流水線結(jié)構(gòu)的運(yùn)算處理裝置,在與 硬件加速器同步的情況下,與多線程執(zhí)行狀態(tài)無(wú)關(guān),以最短周期來(lái)保障指 令的執(zhí)行的實(shí)時(shí)。
      為了解決所述問(wèn)題,本發(fā)明的運(yùn)算處理裝置,在同一周期可以執(zhí)行多 個(gè)指令,其特點(diǎn)是,包括指令讀取單元,讀取多個(gè)指令碼;指令發(fā)行單
      元,將所述指令讀取單元所讀取的多個(gè)指令碼,分割為由能夠同時(shí)發(fā)行的
      指令組成的一個(gè)以上的指令組,從而發(fā)行指令組的指令碼;指令解碼單元, 對(duì)所述指令發(fā)行單元所發(fā)行的一個(gè)以上的指令碼進(jìn)行解碼,從而生成運(yùn)算
      7所需要的控制信號(hào);以及運(yùn)算處理單元,根據(jù)所述指令解碼單元所生成的
      所述控制信號(hào)進(jìn)行運(yùn)算,所述指令發(fā)行單元,具有檢測(cè)單元,檢測(cè)特定
      指令,所述特定指令指示只在剛發(fā)行特定指令后的規(guī)定的周期期間停止發(fā)
      行后續(xù)于所述特定指令的指令;以及指令發(fā)行停止單元,只在剛發(fā)行所述 特定指令后的規(guī)定的周期期間停止發(fā)行所述后續(xù)的指令。
      在此,也可以是,所述指令發(fā)行單元,在檢測(cè)出所述特定指令的情況 下,將后續(xù)于所述特定指令的指令從包含所述特定指令的指令組中除外。
      在此,也可以是,所述指令讀取單元,從多個(gè)線程中分別讀取指令碼, 所述指令發(fā)行單元,按每個(gè)線程將線程中的指令串分割為指令組。
      而且,在本發(fā)明中,將進(jìn)行以SMT能夠執(zhí)行的處理器的程序執(zhí)行時(shí)間 的最短執(zhí)行時(shí)間的調(diào)整之事宜描述為指令同步執(zhí)行。
      在此,也可以是,所述檢測(cè)單元,依據(jù)指令碼中的1位的指令位字段 來(lái)檢測(cè)所述特定指令。根據(jù)該結(jié)構(gòu),由于通過(guò)對(duì)1位的指令位字段進(jìn)行解 碼,來(lái)進(jìn)行所述指令同步執(zhí)行檢測(cè),因此具有可以對(duì)所有的指令進(jìn)行實(shí)時(shí) 執(zhí)行的單元。
      在此,也可以是,所述檢測(cè)單元,通過(guò)對(duì)指令碼中的多位的指令位字 段進(jìn)行解碼,從而檢測(cè)所述特定指令。根據(jù)該結(jié)構(gòu),由于通過(guò)對(duì)多位的指 令位字段進(jìn)行解碼,來(lái)進(jìn)行所述指令同步執(zhí)行檢測(cè),因此具有可以對(duì)某種 特定的指令進(jìn)行實(shí)時(shí)執(zhí)行的單元。
      在此,也可以是,所述檢測(cè)單元,通過(guò)對(duì)指令碼中的多位的指令位字 段進(jìn)行解碼,從而檢測(cè)第一指令以及第二指令,將從所述第一指令直到所 述第二指令之前的各個(gè)指令作為所述特定指令來(lái)檢測(cè)。在此,也可以是, 所述運(yùn)算處理裝置,還具有處理器狀態(tài)寄存器,該處理器狀態(tài)寄存器保持 狀態(tài)信號(hào),該狀態(tài)信號(hào)示出正在處于停止發(fā)行所述后續(xù)指令的狀態(tài)。根據(jù) 該結(jié)構(gòu),由于通過(guò)對(duì)多位的指令位字段進(jìn)行解碼,來(lái)進(jìn)行所述指令同步執(zhí) 行的有效檢測(cè)和無(wú)效檢測(cè),因此具有管理能夠?qū)崟r(shí)執(zhí)行的狀態(tài)的單元。
      在此,也可以是,所述保持單元,通過(guò)中斷處理的發(fā)生來(lái)將所保持的 狀態(tài)信號(hào)變?yōu)闊o(wú)效。根據(jù)該結(jié)構(gòu),由于具有通過(guò)對(duì)多位的指令位字段進(jìn)行 解碼,來(lái)進(jìn)行所述指令同步執(zhí)行的有效檢測(cè)和無(wú)效檢測(cè)、并在受理中斷的 情況下也進(jìn)行無(wú)效檢測(cè)的單元,因此具有管理能夠?qū)崟r(shí)執(zhí)行的狀態(tài)而在通過(guò)中斷處理等經(jīng)過(guò)充分的時(shí)間的情況下解除此狀態(tài)的單元。
      在此,也可以是,所述指令發(fā)行停止單元,具有周期數(shù)記憶單元,記 憶示出所述規(guī)定的周期期間的周期數(shù),并以所記憶的周期數(shù)來(lái)停止發(fā)行所 述后續(xù)指令。根據(jù)該結(jié)構(gòu),由于具有預(yù)定的周期數(shù)的停止單元,因此可以 設(shè)想能夠?qū)崟r(shí)執(zhí)行的粒度。并且,由于具有以軟件所設(shè)定的周期數(shù)來(lái)停止 的單元,因此可以變更能夠?qū)崟r(shí)執(zhí)行的粒度。
      在此,也可以是,所述周期數(shù)記憶單元,記憶與所述運(yùn)算處理裝置的 工作頻率相對(duì)應(yīng)的周期數(shù)。根據(jù)該結(jié)構(gòu),由于具有按照預(yù)定的處理器的工 作頻率的周期數(shù)的停止單元,因此可以設(shè)想與工作頻率無(wú)關(guān)地能夠?qū)崟r(shí)執(zhí) 行的粒度。
      在此,也可以是,所述周期數(shù)記憶單元,記憶與所述運(yùn)算處理裝置可 以工作的多個(gè)工作頻率相對(duì)應(yīng)的多個(gè)周期數(shù)。根據(jù)該結(jié)構(gòu),由于具有按照 處理器的工作頻率的設(shè)定以預(yù)軟件所設(shè)定的周期數(shù)來(lái)停止的單元,因此可 以與工作頻率無(wú)關(guān)地變更能夠?qū)崟r(shí)執(zhí)行的粒度。
      在此,也可以是,所述指令發(fā)行單元,具有工作模式檢測(cè)單元,檢測(cè) 工作模式是否是使所述特定指令所屬的線程優(yōu)先于其它線程的工作模式, 所述指令發(fā)行停止單元,按照檢測(cè)出的工作模式,只在所述規(guī)定的周期期
      間停止發(fā)行所述后續(xù)指令。根據(jù)該結(jié)構(gòu),由于具有按照SMT執(zhí)行中的性能 保障的設(shè)定的周期數(shù)的停止單元,因此可以設(shè)想與性能保障模式無(wú)關(guān)地能 夠?qū)崟r(shí)執(zhí)行的粒度。
      在此,也可以是,所述指令發(fā)行單元,具有工作模式檢測(cè)單元以及周 期數(shù)記憶單元,所述工作模式檢測(cè)單元,檢測(cè)工作模式是否是使所述特定 指令所屬的線程優(yōu)先于其它線程的工作模式,所述周期數(shù)記憶單元,按每 個(gè)工作模式記憶示出所述規(guī)定的周期期間的周期數(shù),所述指令發(fā)行停止單 元,只在按照檢測(cè)出的工作模式的周期數(shù)的期間停止發(fā)行所述后續(xù)指令。 根據(jù)該結(jié)構(gòu),由于具有按照SMT執(zhí)行中的性能保障的設(shè)定以預(yù)軟件所設(shè)定 的周期數(shù)來(lái)停止的單元,因此可以與性能保障模式無(wú)關(guān)地變更能夠?qū)崟r(shí)執(zhí) 行的粒度。
      在此,也可以是,所述指令發(fā)行單元,具有指令數(shù)記憶單元,記憶在 所述第一指令到所述第二指令之間可以發(fā)行的指令數(shù),在每次發(fā)行時(shí)進(jìn)行倒計(jì)數(shù)。
      在此,也可以是,所述運(yùn)算處理裝置,還具有處理器狀態(tài)寄存器,該 處理器狀態(tài)寄存器保持所述保持單元所保持的狀態(tài)信號(hào)的值,所述指令發(fā) 行停止單元,具有指令數(shù)記憶單元,在所述保持單元保持示出正在處于停 止發(fā)行所述后續(xù)指令的狀態(tài)的狀態(tài)信號(hào)的情況下,記憶在所述第一指令到 所述第二指令之間可以發(fā)行的指令數(shù),在每次發(fā)行時(shí)進(jìn)行倒計(jì)數(shù)。根據(jù)該
      結(jié)構(gòu),權(quán)利要求13、 14所述的運(yùn)算處理裝置,由于可以設(shè)定在指令同步 執(zhí)行模式中可以發(fā)行的指令數(shù),因此,即使不生成用于填充不必要的指令 槽的偽指令也可以控制指令發(fā)行數(shù)。
      并且,本發(fā)明的程序轉(zhuǎn)換裝置,將第一程序轉(zhuǎn)換為第二程序,其特點(diǎn)
      是,具有抽出單元,從第一程序中抽出指示語(yǔ)句,該指示語(yǔ)句指示程序
      轉(zhuǎn)換裝置設(shè)定特定指令;檢測(cè)單元,根據(jù)第一程序中的所述指示語(yǔ)句,檢
      測(cè)第一指令和第二指令,該第一指令向外部裝置請(qǐng)求處理,所述第二指令
      從該外部裝置讀出應(yīng)答;以及生成單元,通過(guò)在從所述第一指令到第二指 令為止的期間設(shè)定特定指令,從而生成第二程序,所述特定指令,指示將 后續(xù)于所述特定指令的指令從包含所述特定指令的指令組中除外,并且, 指示只在剛發(fā)行所述特定指令后的規(guī)定的周期期間停止發(fā)行后續(xù)的指令。 根據(jù)該結(jié)構(gòu),例如向以C語(yǔ)言描述的程序中插入指示語(yǔ)句(編譯指示等), 從而可以將指令同步執(zhí)行模式中的本線程的能夠先行處理的程序插入。
      并且,本發(fā)明的處理器,同時(shí)發(fā)行并執(zhí)行構(gòu)成由能夠同時(shí)執(zhí)行的指令 組成的指令組的指令,所述處理器,執(zhí)行包含特定指令的程序,所述特定 指令,指示將后續(xù)于所述特定指令的指令從包含所述特定指令的指令組中 除外,并且,指示只在剛發(fā)行所述特定指令后的規(guī)定的周期期間停止發(fā)行 后續(xù)的指令。
      在此,也可以是,所述處理器是多線程處理器,讀取多個(gè)線程,按每 個(gè)線程將線程中的指令串分割為指令組。
      本發(fā)明具有的效果是,在多線程處理器結(jié)構(gòu)的運(yùn)算處理裝置中,與各 個(gè)線程的指令執(zhí)行狀態(tài)無(wú)關(guān),可以以按照多線程執(zhí)行性能分配的形式來(lái)保 障本線程的指令執(zhí)行時(shí)間的最短執(zhí)行時(shí)間。


      圖1是示出實(shí)施例1涉及的運(yùn)算處理裝置的結(jié)構(gòu)的功能框圖。
      圖2是示出指令碼的位結(jié)構(gòu)例的圖。
      圖3是圖1的指令同步執(zhí)行檢測(cè)部的內(nèi)部結(jié)構(gòu)中的、對(duì)應(yīng)于一個(gè)線程 的結(jié)構(gòu)框圖。
      圖4是示出圖l所述的寄存器組的內(nèi)部結(jié)構(gòu)的圖。
      圖5是對(duì)應(yīng)于一個(gè)線程的指令發(fā)行停止部的結(jié)構(gòu)框圖。
      圖6是示出用于對(duì)比說(shuō)明的以往技術(shù)的線程A的程序例(程序A-l)的圖。
      圖7是示出本實(shí)施例的線程A的程序例(程序A-2)的圖。
      圖8是示出與線程A—起執(zhí)行的程序例(程序B-l)的圖。
      圖9是示出與線程A —起執(zhí)行的程序例(程序C-l)的圖。
      圖10是說(shuō)明以SMT執(zhí)行程序A-1、 B-l、 C-l的情況的工作的圖。
      圖11是說(shuō)明以SMT執(zhí)行程序A-2、 B-l、 C-l的情況的工作的圖。
      圖12是處理器的變形例的結(jié)構(gòu)框圖。
      圖13是示出指令碼的位結(jié)構(gòu)例的圖。
      圖14是實(shí)施例2的指令同步執(zhí)行檢測(cè)部的內(nèi)部結(jié)構(gòu)中的、對(duì)應(yīng)于一
      個(gè)線程的結(jié)構(gòu)框圖。
      圖15是示出線程A的程序例(程序A-3)的圖。
      圖16是示出實(shí)施例3的線程A的程序例(程序A-4)的圖。
      圖17是實(shí)施例4的指令同步執(zhí)行檢測(cè)部的內(nèi)部結(jié)構(gòu)中的、對(duì)應(yīng)于一
      個(gè)線程的結(jié)構(gòu)框圖。
      圖18是示出本實(shí)施例的線程A的程序例瑕序A-5)的圖。
      圖19是實(shí)施例5的指令同步執(zhí)行檢測(cè)部的內(nèi)部結(jié)構(gòu)中的、對(duì)應(yīng)于一
      個(gè)線程的結(jié)構(gòu)框圖。
      圖20是實(shí)施例6的對(duì)應(yīng)于一個(gè)線程的指令發(fā)行停止部的結(jié)構(gòu)框圖。 圖21是實(shí)施例7的對(duì)應(yīng)于一個(gè)線程的指令發(fā)行停止部的結(jié)構(gòu)框圖。 圖22是實(shí)施例8的對(duì)應(yīng)于一個(gè)線程的指令發(fā)行停止部的結(jié)構(gòu)框圖。 圖23是實(shí)施例9的指令同步執(zhí)行檢測(cè)部的內(nèi)部結(jié)構(gòu)中的、對(duì)應(yīng)于一
      個(gè)線程的結(jié)構(gòu)框圖。
      ii圖24是指令同步執(zhí)行檢測(cè)部的內(nèi)部結(jié)構(gòu)中的、對(duì)應(yīng)于一個(gè)線程的結(jié)構(gòu) 框圖。
      圖25是示出線程A的程序例(程序A-6)的圖。 圖26是實(shí)施例10的程序轉(zhuǎn)換裝置的結(jié)構(gòu)框圖。 圖27是示出線程A的源程序例(程序D-l)的圖。
      糾翻
      100處理器
      112指令發(fā)行部
      121指令同步執(zhí)行檢測(cè)部
      122指令發(fā)行停止部
      731有效參考表
      732無(wú)效參考表
      910處理器狀態(tài)寄存器
      1060同步控制部
      1181停止期間記憶部
      1283工作頻率檢測(cè)部
      1385性能保證工作模式檢測(cè)部
      1485指令同步執(zhí)行指令發(fā)行數(shù)記憶部
      具體實(shí)施例方式
      以下,參照

      本發(fā)明的實(shí)施例。 (實(shí)施例1)
      本實(shí)施例的運(yùn)算處理裝置是一種處理器,同時(shí)發(fā)行并執(zhí)行構(gòu)成由能夠 同時(shí)執(zhí)行的指令組成的指令組的指令,該處理器執(zhí)行的程序包含特定指令。 在此,特定指令是一種指令,指示將后續(xù)于所述特定指令的指令從包含所 述特定指令的指令組中除外,并且,指示只在剛發(fā)行所述特定指令后的規(guī) 定的周期期間停止發(fā)行后續(xù)的指令。
      以下,利用圖1 圖12說(shuō)明處理器是多線程處理器的情況,該多線程 處理器讀取多個(gè)線程而按每個(gè)線程將線程中的指令串分割為指令組。以本 實(shí)施例的多線程處理器為一個(gè)例子,假設(shè)能夠同時(shí)執(zhí)行三個(gè)線程、按每個(gè)線程能夠最多發(fā)行三個(gè)指令、能夠同時(shí)發(fā)行的指令組是二個(gè)線程的指令組、 能夠同吋最多發(fā)行四個(gè)指令而進(jìn)行說(shuō)明。
      圖1是示出本實(shí)施例涉及的運(yùn)算處理裝置的結(jié)構(gòu)的功能框圖。該圖中,
      作為運(yùn)算處理裝置的處理器100包括指令傳遞部110、運(yùn)算執(zhí)行部130、 指令存儲(chǔ)器140、數(shù)據(jù)存儲(chǔ)器150、寄存器組160,指令傳遞部110通過(guò) 總線171與指令存儲(chǔ)器140連接、通過(guò)總線175與運(yùn)算執(zhí)行部130連接。 運(yùn)算執(zhí)行部130通過(guò)總線175與指令傳遞部110連接、通過(guò)總線172與 數(shù)據(jù)存儲(chǔ)器150連接、通過(guò)總線173與寄存器組160連接。
      指令傳遞部110包括指令讀取部lll,從指令存儲(chǔ)器140讀取描述 為程序的指令、或記載在通過(guò)硬件控制被中斷的處理來(lái)決定的地址的指令 碼;指令發(fā)行部112,對(duì)通過(guò)指令讀取部lll獲得的按每個(gè)線程被分割的 指令碼進(jìn)行運(yùn)算執(zhí)行部130的流水線沖突檢測(cè)、線程間的運(yùn)算資源競(jìng)爭(zhēng)檢 測(cè)和線程間的指令發(fā)行調(diào)解后,向運(yùn)算執(zhí)行部130發(fā)行一個(gè)以上的指令碼。
      指令發(fā)行部112具有指令同步執(zhí)行檢測(cè)部121,檢測(cè)是否為使指令 執(zhí)行周期同步并執(zhí)行的指令;指令發(fā)行停止部122,按照指令同步執(zhí)行檢 測(cè)部121的輸出可以生成用于停止發(fā)行指令的信號(hào)中的一個(gè)。而且,通過(guò) 指令同步執(zhí)行檢測(cè)部121獲得的檢測(cè)信息,也用作線程內(nèi)的指令發(fā)行組分 割的條件(后述的指令緩沖器的指令碼有效位)。
      運(yùn)算執(zhí)行部130包括指令解碼部131,從指令傳遞部IIO輸入以同 一周期可以執(zhí)行多個(gè)線程的指令的指令組,并制作運(yùn)算執(zhí)行部130的控制 信號(hào)和運(yùn)算所需要的數(shù)據(jù);數(shù)據(jù)訪問(wèn)部132,根據(jù)指令解碼部131所制作 的控制信號(hào)和數(shù)據(jù)進(jìn)行數(shù)據(jù)訪問(wèn);運(yùn)算處理部133,根據(jù)指令解碼部131 所制作的控制信號(hào)和數(shù)據(jù)訪問(wèn)部132所制作的數(shù)據(jù)執(zhí)行運(yùn)算。再者,數(shù)據(jù) 訪問(wèn)部132與數(shù)據(jù)存儲(chǔ)器150以及寄存器組160連接,該寄存器組160 包括處理器所需要的各種寄存器。而且,在本實(shí)施例中假設(shè),處理器具有 能夠使三個(gè)線程工作的SMT結(jié)構(gòu)。因此,假設(shè),處理器按三個(gè)線程的每個(gè) 線程具有內(nèi)部資源。
      圖2是示出指令碼的位結(jié)構(gòu)例的圖。在本實(shí)施例中,以32位固定的 指令位圖為例子進(jìn)行說(shuō)明,并示出為在位31的S為1時(shí)進(jìn)行指令同步執(zhí) 行的特定指令。在此,特定指令是一種指令,指示將后續(xù)于所述特定指令的指令從包含所述特定指令的指令組中排除,并且,指示只在剛發(fā)行所述 特定指令后的規(guī)定的周期期間停止發(fā)行后續(xù)的指令。如該圖,由于依據(jù)位
      31決定是否為特定指令,因此,在本實(shí)施例中所有的指令會(huì)成為特定指令。 而且,對(duì)于位的賦值方法,不僅限于此。
      圖3是圖1的指令同步執(zhí)行檢測(cè)部121的內(nèi)部結(jié)構(gòu)中的、對(duì)應(yīng)于一個(gè) 線程的結(jié)構(gòu)框圖。在同時(shí)執(zhí)行三個(gè)線程的多線程處理器的情況下,圖1的 指令同步執(zhí)行檢測(cè)部121具備三組該圖的結(jié)構(gòu)。
      指令發(fā)行部112具有將按每個(gè)線程成為發(fā)行對(duì)象的最多指令數(shù)的指令 存儲(chǔ)的指令緩沖器550,按程序計(jì)數(shù)器的順序存儲(chǔ)有第一指令碼551、第 二指令碼552、第三指令碼553、以及第一有效位554、第二有效位555、 第三有效位556,這些有效位示出是否存儲(chǔ)有有效于各個(gè)指令碼的緩沖器 的指令。
      輸入這些信息,指令同步執(zhí)行檢測(cè)部500包括"與"門(mén)511,輸入 第一指令碼551的位31和第一有效位554;"與"門(mén)512,輸入第二指令 碼552的位31和第二有效位555;"與"門(mén)513,輸入第三指令碼553 的位31和第三有效位556;以及"或"門(mén)514,從"與"門(mén)511、"與" 門(mén)512、"與"門(mén)513輸入。指令同步執(zhí)行檢測(cè)部500,依據(jù)第一 第三 指令碼中的各1位的指令位字段,檢測(cè)需要指令同步執(zhí)行的所述的特定指 令。作為"或"門(mén)514的輸出的指令同步執(zhí)行檢測(cè)信號(hào)590被生成,該指 令同步執(zhí)行檢測(cè)信號(hào)590示出包含需要指令同步執(zhí)行的指令。
      再者,為了通過(guò)指令同步執(zhí)行檢測(cè)信號(hào)590示出究竟能否發(fā)行指令緩 沖器所存儲(chǔ)的指令而生成將第一有效位554原封不動(dòng)輸出的第一指令碼 有效位591;從"與"門(mén)581輸出的第二指令碼有效位592,該"與"門(mén) 581輸入第二有效位555和被反轉(zhuǎn)的"與"門(mén)511的輸出;從"與"門(mén) 582輸出的第三指令碼有效位593,該"與"門(mén)582輸入第三有效位556、 "與"門(mén)581的輸出和被反轉(zhuǎn)的"與"門(mén)512的輸出。所述的"與"門(mén) 511 513、 581以及582,在檢測(cè)出特定指令的情況下,將后續(xù)于特定 指令的指令從包含特定指令的指令組中除外。即,在該情況下,對(duì)應(yīng)于后 續(xù)的指令的有效位,作為第二指令碼有效位592、第三指令碼有效位593 被無(wú)效化。據(jù)此,依據(jù)指令同步執(zhí)行檢測(cè)部500輸出的指令同步執(zhí)行檢測(cè)信號(hào) 590,來(lái)示出指令組中包含進(jìn)行同步執(zhí)行的特定指令,依據(jù)第一指令碼有 效位591、第二指令碼有效位592、第三指令碼有效位593,后續(xù)于所述 特定指令的指令從線程內(nèi)的包含特定指令的指令組中被除外。
      而且,圖3的指令同步執(zhí)行檢測(cè)部500中只示出一個(gè)線程內(nèi)的控制信 號(hào)。在本實(shí)施例中,由于設(shè)想能夠同時(shí)執(zhí)行三個(gè)線程的處理器,因此這些 資源對(duì)每個(gè)線程都需要。但是,從以SMT能夠執(zhí)行的處理器的結(jié)構(gòu)的觀點(diǎn) 來(lái)看,當(dāng)然具有該結(jié)構(gòu),因此以后省略說(shuō)明。
      圖4是示出作為圖1所述的寄存器組160的一個(gè)例子的寄存器組900 的內(nèi)部結(jié)構(gòu)的圖。寄存器組900包括通用寄存器912 915;存儲(chǔ)處理 器狀態(tài)的處理器狀態(tài)寄存器910;操作數(shù)數(shù)據(jù)鎖存器921 924,寄存器 組900還包括存儲(chǔ)運(yùn)算結(jié)果的標(biāo)記的標(biāo)記寄存器;處理器所需要的控制 寄存器。而且,因此這些資源對(duì)每個(gè)線程都需要。但是,從以SMT能夠執(zhí) 行的處理器的結(jié)構(gòu)的觀點(diǎn)來(lái)看,當(dāng)然具有該結(jié)構(gòu),因此以后省略說(shuō)明。
      圖5是示出圖1所述的指令發(fā)行停止部122的內(nèi)部結(jié)構(gòu)中的、對(duì)應(yīng)于 一個(gè)線程的指令發(fā)行停止部1000的結(jié)構(gòu)的框圖。指令發(fā)行停止部1000 輸入通過(guò)指令同步執(zhí)行檢測(cè)部500所輸出的指令同步執(zhí)行檢測(cè)信號(hào)590來(lái) 獲得的指令發(fā)行停止請(qǐng)求信號(hào)1010、和通過(guò)指令發(fā)行部112以及運(yùn)算執(zhí) 行部130獲得的關(guān)于流水線沖突的流水線沖突狀態(tài)信號(hào)1030。
      指令發(fā)行停止部1000包括觸發(fā)器(mp-flop)1020,輸入指令發(fā)行 停止請(qǐng)求信號(hào)1010、和使用于指令傳遞部110的時(shí)鐘信號(hào)1021;作為狀 態(tài)機(jī)(state machine)的同步控制部1060,輸入觸發(fā)器1020的輸出,且 生成示出發(fā)行停止期間的信號(hào);作為狀態(tài)機(jī)的沖突檢測(cè)部1031,輸入流水 線沖突狀態(tài)信號(hào)1030,且生成示出發(fā)行停止期間的信號(hào),指令發(fā)行停止部 1000還包括"或"門(mén)1040,輸入同步控制部1060的輸出和沖突檢測(cè) 部1031的輸出。同步控制部1060輸出指令發(fā)行停止?fàn)顟B(tài)信號(hào)1050,該 指令發(fā)行停止?fàn)顟B(tài)信號(hào)1050指示只在剛發(fā)行所述特定指令后的規(guī)定的周 期期間停止發(fā)行后續(xù)于特定指令的指令。規(guī)定的周期期間也可以預(yù)先固定 為二個(gè)周期、三個(gè)周期等。
      據(jù)此,"或"門(mén)1040的輸出的指令發(fā)行停止?fàn)顟B(tài)信號(hào)1050,被生成為指令發(fā)行停止部1000的輸出信號(hào),依據(jù)指令發(fā)行停止?fàn)顟B(tài)信號(hào)1050 可以生成示出在下一個(gè)周期不能發(fā)行本線程的信號(hào)。
      而且,圖5的指令發(fā)行停止部1000中只示出一個(gè)線程內(nèi)的控制信號(hào)。 在本實(shí)施例中,由于設(shè)想能夠同時(shí)執(zhí)行三個(gè)線程的處理器,因此這些資源 對(duì)每個(gè)線程都需要。但是,從以SMT能夠執(zhí)行的處理器的結(jié)構(gòu)的觀點(diǎn)來(lái)看, 當(dāng)然具有該結(jié)構(gòu),因此以后省略說(shuō)明。
      而且,在本實(shí)施例1中示出了指令傳遞部和運(yùn)算執(zhí)行部的內(nèi)部結(jié)構(gòu), 然而,對(duì)于這些處理的順序,按照流水線的結(jié)構(gòu)可以更換,因此不僅限于 此。
      根據(jù)所述內(nèi)容可以提供一種運(yùn)算處理裝置,該運(yùn)算處理裝置,通過(guò)具 有指令發(fā)行部112,從而以SMT能夠執(zhí)行的處理器,與其它線程的執(zhí)行狀 態(tài)無(wú)關(guān)而以細(xì)粒度來(lái)能夠調(diào)整適合本線程的程序的執(zhí)行時(shí)間的最短時(shí)間, 該指令發(fā)行部112,對(duì)示出進(jìn)行指令同步執(zhí)行之事宜的指令碼進(jìn)行預(yù)解碼, 按每個(gè)線程根據(jù)流水線沖突狀態(tài)信號(hào)1030和指令發(fā)行停止請(qǐng)求信號(hào)1010 的邏輯和來(lái)進(jìn)行指令發(fā)行控制,所述流水線沖突狀態(tài)信號(hào)1030是普通的 處理器所需要的,所述指令發(fā)行停止請(qǐng)求信號(hào)1010是與流水線沖突無(wú)關(guān) 而生成的。
      以下,對(duì)于本實(shí)施例中說(shuō)明的程序和其工作例,參照?qǐng)D6 圖9示出 的程序例和圖10、圖11示出的各個(gè)線程的指令執(zhí)行狀態(tài)進(jìn)行說(shuō)明。
      圖6示出的程序A-l是線程A的程序例,用于說(shuō)明不利用本實(shí)施例的 以往的技術(shù)的問(wèn)題和實(shí)施例1的效果。圖7示出的程序A-2是利用本實(shí)施 例的情況下的線程A的程序例。
      圖6示出的程序A-l中記載有指令發(fā)行部112所發(fā)行的線程A的指 令發(fā)行可能的指令組。在Step列,按照發(fā)行順序?qū)⒏鱾€(gè)執(zhí)行步驟記載為 SA1、 SA2、",、 SA15。對(duì)于在各個(gè)線程的同一周期可以發(fā)行的指令,裝 入、保存指令只能夠發(fā)行一個(gè)指令,算術(shù)邏輯運(yùn)算以及傳輸指令能夠發(fā)行 三個(gè)指令。SA1的指令是,Instructionl、 Instrucion2和Instruction3 的三個(gè)指令中可以發(fā)行的setlo指令以及sethi指令。setlo指令是,向寄 存器r0存儲(chǔ)立即值(即値)32位(HWE—A)的低16位的指令。sethi指令是, 向寄存器r0存儲(chǔ)立即值32位(HWE一A)的高16位的指令。為了避免SA1指令組的沖突,在SA2可以發(fā)行后續(xù)的st指令。SA2的指令是st指令以 及n叩指令,該st指令將寄存器rl的內(nèi)容保存到以rO為地址的存儲(chǔ)空 間。從SA3到SA9的指令是n叩指令。SAIO的指令是與SA1相同向寄 存器r2存儲(chǔ)立即值32位(HWE-ST)的指令、以及nop指令。SA11的指 令是ld指令,從以rO為地址的存儲(chǔ)空間裝入,并向寄存器rl存儲(chǔ)內(nèi)容。 SA12的指令是add指令,將寄存器rl與立即值100的和存儲(chǔ)到寄存器 rl。 SA13的指令是st指令,將寄存器rl的內(nèi)容保存到以r2為地址的存 儲(chǔ)空間。SA14以及SA15的指令是add指令,將寄存器r0與立即值1 的和存儲(chǔ)到寄存器r0。該線程A的程序A-1是一種硬件加速器的模型,該 硬件加速器,對(duì)某硬件加速器(11\\^_八)進(jìn)行寫(xiě)入,而經(jīng)過(guò)8nSec后從該地 址裝入,則可以獲得特殊的運(yùn)算結(jié)果。由于該程序工作的處理器的工作頻 率為lGHz,因此,為了空出8nSec的時(shí)間,而從SA2到SA9為止發(fā)行 八個(gè)nop指令、在SA10發(fā)行三個(gè)指令,來(lái)以共九個(gè)nop指令來(lái)經(jīng)過(guò)八 個(gè)指令發(fā)行周期、即空出共8nSec的時(shí)間,從而滿足從硬件加速器裝入的 時(shí)間限制。
      圖8示出的程序B-l中記載有指令發(fā)行部112所發(fā)行的線程B的指令 發(fā)行可能的指令組。在Step列,按照發(fā)行順序?qū)⒏鱾€(gè)執(zhí)行步驟記載為SB1、 SB2、、 SB13。對(duì)于在各個(gè)線程的同一周期可以發(fā)行的指令,裝入、保 存指令只能夠發(fā)行一個(gè)指令,算術(shù)邏輯運(yùn)算以及傳輸指令能夠發(fā)行三個(gè)指 令。SB1的指令是,Instructionl、 Instrucion2和Instruction3的三個(gè) 指令中可以發(fā)行的add指令以及Id指令,該add指令將寄存器r5與立即 值1的和存儲(chǔ)到寄存器r7,該ld指令從以寄存器r2為地址的存儲(chǔ)空間向 寄存器r3裝入。SB2的指令是比較指令,在寄存器r5大于寄存器r7的 情況下向標(biāo)記寄存器C6存儲(chǔ)1; st指令,將寄存器r3的內(nèi)容保存到以寄 存器r0為地址的存儲(chǔ)空間;以及add指令,將寄存器r2與立即值120 的和存儲(chǔ)到寄存器r0。 SB3的指令是mov指令,將寄存器r5的內(nèi)容復(fù) 制到寄存器r6; st指令,將寄存器r5的內(nèi)容保存到以寄存器r0為地址的 存儲(chǔ)空間;以及br指令,在標(biāo)記寄存器C6設(shè)定為1的情況下向L028標(biāo) 簽分支。SB4的指令是settar指令,向存儲(chǔ)分支目標(biāo)地址的目標(biāo)地址寄 存器TAR存儲(chǔ)分支目標(biāo)地址;以及mov指令,將立即值200復(fù)制到寄存
      17器rO。 SB5的指令是add指令,將寄存器r5與寄存器r0的和存儲(chǔ)到寄存 器r4。 SB6的指令是s2add指令,將寄存器r4的內(nèi)容向左移動(dòng)2位、并 將與寄存器。的和存儲(chǔ)到寄存器r4。 SB7的指令是add指令,將寄存器 r6與即值1的和存儲(chǔ)到寄存器r6。 SB8的指令是比較指令,在寄存器r6 與寄存器r7相比小或相同的情況下,向標(biāo)記寄存器C6存儲(chǔ)1。 SB9的指 令是算后增量(post-increment)st指令,將寄存器r5的內(nèi)容保存到以寄 存器r4為地址的存儲(chǔ)空間并向地址r4加上4;以及jmpf指令,在標(biāo)記 寄存器C6設(shè)定為1的情況下,向存儲(chǔ)分支目標(biāo)地址的目標(biāo)地址寄存器TAR 所存儲(chǔ)的分支目標(biāo)地址轉(zhuǎn)移。SB10的指令是mov指令,將立即值200復(fù) 制到寄存器r4。從SB11到SB13的指令是add指令,將寄存器r4與立 即值l的和存儲(chǔ)到寄存器r4。
      圖9示出的程序C-l中記載有指令發(fā)行部112所發(fā)行的線程C的指 令發(fā)行可能的指令組。在Step歹U,按照發(fā)行順序?qū)⒏鱾€(gè)執(zhí)行步驟記載為 SC1、 SC2、"v SC14。對(duì)于在各個(gè)線程的同一周期可以發(fā)行的指令,裝 入、保存指令只能夠發(fā)行一個(gè)指令,算術(shù)邏輯運(yùn)算以及傳輸指令能夠發(fā)行 三個(gè)指令。SC1的指令是,Instructionl、 Instrucion2和Instruction3 的三個(gè)指令中可以發(fā)行的setlo指令以及sethi指令。setlo指令是,向寄 存器r0存儲(chǔ)立即值32位(HWE—A)的低16位的指令。sethi指令是,向寄 存器r0存儲(chǔ)立即值32位(HWE—A)的高16位的指令。SC2的指令是算 后增量ldp指令,從以寄存器r0為地址的存儲(chǔ)空間裝入8位來(lái)存儲(chǔ)到寄存 器r2、寄存器r3,并向寄存器r0加上8;以及add指令,將寄存器rl 與立即值1000的和存儲(chǔ)到寄存器rl。SC3的指令是算后增量ldp指令, 從以寄存器r0為地址的存儲(chǔ)空間裝入8位來(lái)存儲(chǔ)到寄存器r4、寄存器r5, 并向寄存器r0加上8; add指令,將寄存器r2與寄存器r3的和存儲(chǔ)到寄 存器r6;以及sub指令,將寄存器r2與寄存器r3的差存儲(chǔ)到寄存器r7。 SC4的指令是算后增量ldp指令,從以寄存器rO為地址的存儲(chǔ)空間裝入 8位來(lái)存儲(chǔ)到寄存器r2、寄存器r3,并向寄存器r0加上8; add指令, 將寄存器r4與寄存器r5的和存儲(chǔ)到寄存器r8;以及sub指令,將寄存器 r4與寄存器r5的差存儲(chǔ)到寄存器r9。SC5的指令是算后增量ldp指令, 從以寄存器r0為地址的存儲(chǔ)空間裝入8位來(lái)存儲(chǔ)到寄存器r4、寄存器r5,并向寄存器r0加上8; add指令,將寄存器r2與寄存器r3的和存儲(chǔ)到寄 存器rl0;以及sub指令,將寄存器r2與寄存器r3的差存儲(chǔ)到寄存器rl 1 。 SC6的指令是算后增量stp指令,將寄存器r6和寄存器r7的內(nèi)容,向 以寄存器rl為地址的存儲(chǔ)空間保存8位,并向寄存器rl加上8; add指 令,將寄存器r4與寄存器r5的和存儲(chǔ)到寄存器rl2;以及sub指令,將 寄存器r4與寄存器r5的差存儲(chǔ)到寄存器rl3。SC7的指令是算后增量stp 指令,將寄存器r8和寄存器r9的內(nèi)容,向以寄存器rl為地址的存儲(chǔ)空間 保存8位,并向寄存器rl加上8。 SC8的指令是算后增量stp指令,將寄 存器rlO和寄存器rll的內(nèi)容,向以寄存器rl為地址的存儲(chǔ)空間保存8 位,并向寄存器rl加上8。 SC9的指令是算后增量stp指令,將寄存器r12 和寄存器r13的內(nèi)容,向以寄存器rl為地址的存儲(chǔ)空間保存8位,并向 寄存器rl加上8。從SC10到SC14的指令是add指令,將寄存器rl與 立即值1的和存儲(chǔ)到寄存器rl。
      以上,說(shuō)明了用于說(shuō)明本實(shí)施例的工作的各個(gè)線程的程序的內(nèi)容。在 此,利用圖IO說(shuō)明以SMT能夠執(zhí)行的、圖1所述的處理器的工作。而且, 為了簡(jiǎn)化本說(shuō)明,指令發(fā)行部112支持根據(jù)以下規(guī)則的SMT執(zhí)行。假設(shè), 各個(gè)線程能夠最多發(fā)行三個(gè)指令,按照優(yōu)先級(jí)可以同時(shí)執(zhí)行的線程是僅二 個(gè)線程。再者假設(shè),在同時(shí)執(zhí)行各個(gè)線程的指令的情況下,以不變更每個(gè) 線程的指令組為前提,只在能夠發(fā)行四個(gè)指令的情況下,以SMT能夠執(zhí)行。 但是,在同一周期中,不能發(fā)行多個(gè)裝入指令、多個(gè)保存指令,并且,能 夠同時(shí)發(fā)行保存指令和裝入指令。再者,為了簡(jiǎn)化這次說(shuō)明,以分支指令、 各種運(yùn)算或裝入的吞吐量為1周期來(lái)進(jìn)行說(shuō)明。
      圖10是在以SMT執(zhí)行圖6的程序A-1、圖8的程序B-1、圖9的程 序C-1的情況下的工作的說(shuō)明圖。在Step歹ij,按照發(fā)行順序?qū)⒏鱾€(gè)執(zhí)行步 驟記載為T(mén)1、T2、…、T20。假設(shè),能夠執(zhí)行的線程的優(yōu)先級(jí),根據(jù)Priority 列的規(guī)則被指令發(fā)行調(diào)解。在Tl,以A>C>B的優(yōu)先級(jí)進(jìn)行指令發(fā)行控制, SA1的二個(gè)指令和SC1的二個(gè)指令被發(fā)行。在T2,以C>B>A的優(yōu)先級(jí) 進(jìn)行指令發(fā)行控制,SC2的二個(gè)指令和SA2的二個(gè)指令被發(fā)行。這是因?yàn)椋?由于SB1包含裝入指令,且不能同時(shí)發(fā)行裝入指令,因此,線程B的指令 組不被發(fā)行,而線程A的指令組被發(fā)行。在T3,以B〉A(chǔ)X:的優(yōu)先級(jí)進(jìn)行指令發(fā)行控制,SB1的二個(gè)指令和SA3的一個(gè)指令被發(fā)行。在T4,以 A>C>B的優(yōu)先級(jí)進(jìn)行指令發(fā)行控制,SA4的一個(gè)指令和SC3的三個(gè)指令 被發(fā)行。在T5,以C>B>A的優(yōu)先級(jí)進(jìn)行指令發(fā)行控制,SC4的三個(gè)指令 和SA5的一個(gè)指令被發(fā)行。在T6,以B>A>C的優(yōu)先級(jí)進(jìn)行指令發(fā)行控制, SB2的三個(gè)指令和SA6的一個(gè)指令被發(fā)行。在T7,以A>C>B的優(yōu)先級(jí)進(jìn) 行指令發(fā)行控制,SA7的一個(gè)指令和SC5的三個(gè)指令被發(fā)行。在T8,以 C>B>A的優(yōu)先級(jí)進(jìn)行指令發(fā)行控制,SC6的三個(gè)指令和SA8的一個(gè)指令 被發(fā)行。在T9,以B〉A(chǔ)X:的優(yōu)先級(jí)進(jìn)行指令發(fā)行控制,SB3的三個(gè)指令 和SA9的一個(gè)指令被發(fā)行。在TIO,以A>C>B的優(yōu)先級(jí)進(jìn)行指令發(fā)行控 制,SA10的三個(gè)指令和SC7的一個(gè)指令被發(fā)行。在Tll,以C>B>A的 優(yōu)先級(jí)進(jìn)行指令發(fā)行控制,SC8的一個(gè)指令和SB4的二個(gè)指令被發(fā)行。在 T12,以B〉A(chǔ)X:的優(yōu)先級(jí)進(jìn)行指令發(fā)行控制,SB5的一個(gè)指令和SAll的 —個(gè)指令被發(fā)行。在T13,以^OB的優(yōu)先級(jí)進(jìn)行指令發(fā)行控制,SA12 的一個(gè)指令和SC9的一個(gè)指令被發(fā)行。在T14,以C>B>A的優(yōu)先級(jí)進(jìn)行 指令發(fā)行控制,SC10的一個(gè)指令和SB6的一個(gè)指令被發(fā)行。在T15,以 B>A>C的優(yōu)先級(jí)進(jìn)行指令發(fā)行控制,SB7的一個(gè)指令和SA13的一個(gè)指令 被發(fā)行。在T16,以^OB的優(yōu)先級(jí)進(jìn)行指令發(fā)行控制,SA14的一個(gè)指 令和SC11的一個(gè)指令被發(fā)行。在T17,以C>B>A的優(yōu)先級(jí)進(jìn)行指令發(fā) 行控制,SC12的一個(gè)指令和SB8的一個(gè)指令被發(fā)行。在T18,以B〉^C 的優(yōu)先級(jí)進(jìn)行指令發(fā)行控制,SB9的二個(gè)指令和SA15的一個(gè)指令被發(fā)行。 在T19,以A>C>B的優(yōu)先級(jí)進(jìn)行指令發(fā)行控制,SA16的一個(gè)指令和SC13 的一個(gè)指令被發(fā)行。在T20,以C>B>A的優(yōu)先級(jí)進(jìn)行指令發(fā)行控制,SC14 的一個(gè)指令和SB10的一個(gè)指令被發(fā)行。
      以上,示出了利用本實(shí)施例的以往的例子。其次,利用圖7的程序A-2 說(shuō)明利用本實(shí)施例的情況下的SMT工作。
      圖7示出的程序A-2中記載有指令發(fā)行部112所發(fā)行的線程A的指 令發(fā)行可能的指令組。在Step列,按照發(fā)行順序?qū)⒏鱾€(gè)執(zhí)行步驟記載為 SA'1、 SA'2、"*、 SA'15。對(duì)于在各個(gè)線程的同一周期可以發(fā)行的指令, 裝入、保存指令只能夠發(fā)行一個(gè)指令,算術(shù)邏輯運(yùn)算以及傳輸指令能夠發(fā) 行三個(gè)指令。SA'1的指令是,Instructionl、 Instrucion2和Instruction3的三個(gè)指令中可以發(fā)行的setlo指令以及sethi指令。setlo指令是,向寄 存器rO存儲(chǔ)立即值32位(HWE—A)的低16位的指令。sethi指令是,向寄 存器rO存儲(chǔ)立即值32位(HWE—A)的高16位的指令。為了避免SA'1指 令組的沖突,在SA'2可以發(fā)行后續(xù)的st指令。SA'2的指令是sync_st指 令,可以同步執(zhí)行st指令,該st指令將寄存器rl的內(nèi)容保存到以rO為 地址的存儲(chǔ)空間。這是,在圖2中記載的指令位圖的位31的S位為1的 狀態(tài)下的st指令。SA'3的指令是sync_setlo指令,可以同步執(zhí)行setlo 指令,該setlo指令將立即值32位(HWE—ST)的低16位存儲(chǔ)到寄存器r2。 SA'4的指令是sync_sethi指令,可以同步執(zhí)行sethi指令,該sethi將立 即值32位(HW^ST)的高16位指令存儲(chǔ)到寄存器r2。 SA'5的指令是ld 指令,從以寄存器rO為地址的存儲(chǔ)空間裝入來(lái)存儲(chǔ)到寄存器rl。 SA'6的 指令是add指令,將寄存器rl與立即值100的和存儲(chǔ)到寄存器rl。 SA'7 的指令是st指令,將寄存器rl的內(nèi)容保存到以r2為地址的存儲(chǔ)空間。從 SA'8到SA'14的指令是add指令,將寄存器r0與立即值1的和存儲(chǔ)到寄 存器r0。該線程A的程序A-2(圖7)是一種硬件加速器的模型,該硬件加 速器,對(duì)某硬件加速器(HWE一A)進(jìn)行寫(xiě)入,而經(jīng)過(guò)8nSec后從該地址裝入, 則可以獲得特殊的運(yùn)算結(jié)果。由于該程序工作的處理器的工作頻率為 lGHz,因此,為了空出8nSec的時(shí)間,以檢測(cè)指令同步執(zhí)行的指令后具 有二個(gè)周期的指令發(fā)行停止期間為特點(diǎn),通過(guò)從SA'2到SA'4為止的三個(gè) 指令同步執(zhí)行來(lái)空出共8nSec的時(shí)間,從而滿足從硬件加速器裝入的時(shí)間 限制。在此示出,圖5中記載的指令發(fā)行停止部1000的觸發(fā)器1020所 鎖存的指令發(fā)行停止請(qǐng)求信號(hào)1010被輸入到作為狀態(tài)機(jī)的同步控制部 1060,與流水線沖突狀態(tài)信號(hào)1030無(wú)關(guān),在二個(gè)周期的期間輸出指令發(fā) 行停止?fàn)顟B(tài)信號(hào)1050。
      圖ll是在以SMT執(zhí)行圖7的程序A-2、圖8的程序B-1、圖9的程 序C-1的情況下的工作的說(shuō)明圖。在Step歹iJ,按照發(fā)行順序?qū)⒏鱾€(gè)執(zhí)行步 驟記載為T(mén)1、T2、 "'、T20。假設(shè),能夠執(zhí)行的線程的優(yōu)先級(jí),根據(jù)Priority 列的規(guī)則被指令發(fā)行調(diào)解。在Tl,以A>C>B的優(yōu)先級(jí)進(jìn)行指令發(fā)行控制, SA'1的二個(gè)指令和SC1的二個(gè)指令被發(fā)行。在T2,以C>B>A的優(yōu)先級(jí) 進(jìn)行指令發(fā)行控制,SC2的二個(gè)指令和SA'2的二個(gè)指令被發(fā)行。這是因?yàn)?,由于SB1包含裝入指令,且不能同時(shí)發(fā)行裝入指令,因此,線程B的指令 組不被發(fā)行,而線程A的指令組被發(fā)行。在T3,以B〉A(chǔ)〉C的優(yōu)先級(jí)進(jìn)行 指令發(fā)行控制,SB1的二個(gè)指令和SA'3的一個(gè)指令被發(fā)行。在T4,以 A>C>B的優(yōu)先級(jí)進(jìn)行指令發(fā)行控制,然而,根據(jù)指令同步執(zhí)行控制SA'的 指令被禁止發(fā)行二個(gè)周期,因此,SA'4的指令不被發(fā)行,而SC3的三個(gè)指 令被發(fā)行。在T5,以C>B>A的優(yōu)先級(jí)進(jìn)行指令發(fā)行控制,然而,與T4 相同SA'4的指令不被發(fā)行,因此,只SC4的三個(gè)指令被發(fā)行。在T6,以 B>A>C的優(yōu)先級(jí)進(jìn)行指令發(fā)行控制,SB2的三個(gè)指令和SA'4的一個(gè)指令 被發(fā)行。在T7,以^OB的優(yōu)先級(jí)進(jìn)行指令發(fā)行控制,然而,根據(jù)指令 同步執(zhí)行控制SA'5的指令不被發(fā)行,而只SC5的三個(gè)指令被發(fā)行。在T8, 以C>B>A的優(yōu)先級(jí)進(jìn)行指令發(fā)行控制,然而,與T7相同SA'5的指令不 被發(fā)行,因此,只SC6的三個(gè)指令被發(fā)行。在T9,以B〉^C的優(yōu)先級(jí)進(jìn) 行指令發(fā)行控制,SB3的三個(gè)指令和SA'5的一個(gè)指令被發(fā)行。在TIO, 以A>C>B的優(yōu)先級(jí)進(jìn)行指令發(fā)行控制,然而,根據(jù)指令同步執(zhí)行控制SA'6 的指令不被發(fā)行,而SC7的一個(gè)指令和SB4的二個(gè)指令被發(fā)行。在Tll, 以C>B>A的優(yōu)先級(jí)進(jìn)行指令發(fā)行控制,SC8的一個(gè)指令和SB5的一個(gè)指 令被發(fā)行。在T12,以B>A>C的優(yōu)先級(jí)進(jìn)行指令發(fā)行控制,SB6的一個(gè) 指令和SA'6的一個(gè)指令被發(fā)行。在T13,以A>C>B的優(yōu)先級(jí)進(jìn)行指令發(fā) 行控制,SA'7的三個(gè)指令和SC9的一個(gè)指令被發(fā)行。在T14,以O(shè)B〉A(chǔ) 的優(yōu)先級(jí)進(jìn)行指令發(fā)行控制,SC10的一個(gè)指令和SB7的一個(gè)指令被發(fā)行。 在T15,以B>A>C的優(yōu)先級(jí)進(jìn)行指令發(fā)行控制,SB8的一個(gè)指令和SA'8 的一個(gè)指令被發(fā)行。在T16,以A〉OB的優(yōu)先級(jí)進(jìn)行指令發(fā)行控制,SA'9 的一個(gè)指令和SC11的一個(gè)指令被發(fā)行。在T17,以C>B>A的優(yōu)先級(jí)進(jìn) 行指令發(fā)行控制,SC12的一個(gè)指令和SB9的二個(gè)指令被發(fā)行。在T18, 以B>A>C的優(yōu)先級(jí)進(jìn)行指令發(fā)行控制,SB10的一個(gè)指令和SA'IO的一個(gè) 指令被發(fā)行。在T19,以A>C>B的優(yōu)先級(jí)進(jìn)行指令發(fā)行控制,SA'll的 三個(gè)指令和SC13的一個(gè)指令被發(fā)行。在T20,以C>B>A的優(yōu)先級(jí)進(jìn)行 指令發(fā)行控制,SC14的一個(gè)指令和SB11的一個(gè)指令被發(fā)行。即,與圖 IO的工作說(shuō)明相比,在具有滿足線程A的程序工作條件的結(jié)構(gòu)的同時(shí),可 以使其它線程的有效性能提高(例如,線程B的指令發(fā)行數(shù)增加了)。
      22根據(jù)所述說(shuō)明,通過(guò)利用指令發(fā)行部112和指令發(fā)行停止部122,在 多線程結(jié)構(gòu)的運(yùn)算器中,與各個(gè)線程的指令執(zhí)行狀態(tài)無(wú)關(guān),可以確保本線 程的指令執(zhí)行時(shí)間的最短時(shí)間,據(jù)此,還可以抑制本線程的指令發(fā)行,從 而對(duì)于其它線程可以提高多線程執(zhí)行性能。并且,在本實(shí)施例,由于以1 位的指令位字段來(lái)進(jìn)行指令同步執(zhí)行檢測(cè),因此,可以對(duì)全部指令進(jìn)行實(shí) 時(shí)執(zhí)行。
      而且,圖12示出圖1的處理器的變形例。圖12的處理器,與圖1的 處理器不同,取代指令發(fā)行停止部122而具備指令發(fā)行停止部241。其它 的結(jié)構(gòu),大致相同。如圖12,可以構(gòu)成為不使指令發(fā)行停止,而使指令執(zhí) 行停止。
      (實(shí)施例2)
      然而,在為了進(jìn)行指令同步執(zhí)行檢測(cè)而使用指令碼的1位來(lái)實(shí)現(xiàn)這些 功能的情況下,可以認(rèn)為從有效利用有限的指令位圖的觀點(diǎn)來(lái)看產(chǎn)生問(wèn)題。 于是,禾!」用圖13、圖14以及圖15說(shuō)明,作為與實(shí)施例1相比不占有浪 費(fèi)的指令位圖的方法的第二指令同步執(zhí)行檢測(cè)部。
      圖13是示出實(shí)施例2的特定指令的指令碼的圖。在本實(shí)施例中,原 則上以32位固定的指令位圖為例子說(shuō)明指令碼,示出在從位31到位24 的OP(Operation Code)是特定的位模式時(shí)成為進(jìn)行指令同步執(zhí)行的特定 指令。該特定指令,不是作為如實(shí)施例1那樣與其它指令兼用的指令、而 是作為專用的指令來(lái)被分配位模式。而且,對(duì)于位圖的分配方法,不僅限 于此。
      圖14是指令同步執(zhí)行檢測(cè)部的內(nèi)部結(jié)構(gòu)中的、對(duì)應(yīng)于一個(gè)線程的結(jié)構(gòu) 框圖。指令發(fā)行部112具有將按每個(gè)線程成為發(fā)行對(duì)象的最多指令數(shù)的指 令(在本實(shí)施例中假設(shè)按每個(gè)線程能夠發(fā)行三個(gè)指令、能夠同時(shí)發(fā)行的指令 組是二個(gè)線程的指令組、能夠同時(shí)發(fā)行四個(gè)指令而進(jìn)行說(shuō)明)存儲(chǔ)的指令緩 沖器650,按程序計(jì)數(shù)器的順序存儲(chǔ)有第一指令碼651、第二指令碼652、 第三指令碼653、以及第一有效位654、第二有效位655、第三有效位656, 這些有效位示出是否存儲(chǔ)有有效于各個(gè)指令碼的緩沖器的指令。
      輸入這些信息,指令同步執(zhí)行檢測(cè)部600包括"與"門(mén)611,輸入 第一指令碼651的從位31到位24的輸出、參考表631的比較器621的輸出和第一有效位654;"與"門(mén)612,輸入第二指令碼652的從位31 到位24的輸出、參考表631的比較器622的輸出和第二有效位655;"與" 門(mén)613,輸入第三指令碼653的從位31到位24的輸出、參考表631的 比較器623的輸出和第三有效位656;以及"或"門(mén)614,從"與"門(mén) 611、"與"門(mén)612、"與"門(mén)613輸入;作為"或"門(mén)614的輸出的指令 同步執(zhí)行檢測(cè)信號(hào)690被生成,該指令同步執(zhí)行檢測(cè)信號(hào)690示出包含需 要指令同步執(zhí)行的指令。
      參考表631保持特定指令的指令碼(位模式)。比較器621 623,分 別通過(guò)對(duì)指令碼中的多位的指令位字段進(jìn)行預(yù)解碼,從而檢測(cè)特定指令。
      再者,為了通過(guò)指令同步執(zhí)行檢測(cè)信號(hào)690示出究竟能否發(fā)行指令緩 沖器所存儲(chǔ)的指令而生成將第一有效位654原封不動(dòng)輸出的第一指令碼 有效位691;從"與"門(mén)681輸出的第二指令碼有效位692,該"與"門(mén) 681輸入第二有效位655和被反轉(zhuǎn)的"與"門(mén)611的輸出;從"與"門(mén) 682輸出的第三指令碼有效位693,該"與"門(mén)682輸入第三有效位656、 "與"門(mén)681的輸出和被反轉(zhuǎn)的"與"門(mén)612的輸出。據(jù)此,通過(guò)指令同 步執(zhí)行檢測(cè)部600輸出的指令同步執(zhí)行檢測(cè)信號(hào)690,示出指令組中包含 進(jìn)行同步執(zhí)行的指令,通過(guò)第一指令碼有效位691、第二指令碼有效位692 以及第三指令碼有效位693、可以識(shí)別線程內(nèi)的可以發(fā)行指令的指令碼。 而且,圖14的指令同步執(zhí)行檢測(cè)部600只示出一個(gè)線程內(nèi)的控制信號(hào)。 在本實(shí)施例中,由于設(shè)想能夠同時(shí)執(zhí)行三個(gè)線程的處理器,因此這些資源 對(duì)每個(gè)線程都需要。但是,從以SMT能夠執(zhí)行的處理器的結(jié)構(gòu)的觀點(diǎn)來(lái)看, 當(dāng)然具有該結(jié)構(gòu),因此以后省略說(shuō)明。
      如上所述,作為不占有浪費(fèi)的指令位圖而具有第二指令同步執(zhí)行檢測(cè) 部,在不占有指令位圖的狀況下,可以提供一種運(yùn)算處理裝置,該運(yùn)算處 理裝置,通過(guò)實(shí)施例1所述的以SMT能夠執(zhí)行的處理器,與其它線程的執(zhí) 行狀態(tài)無(wú)關(guān),能夠以細(xì)粒度調(diào)整符合本線程的程序的執(zhí)行時(shí)間的最短時(shí)間。
      以下,作為本實(shí)施例中說(shuō)明的程序,說(shuō)明在指令位圖只增加sync指令 的、圖15示出的程序A-3。
      圖15示出的程序A-3中記載有指令發(fā)行部112所發(fā)行的線程A的指 令發(fā)行可能的指令組。在Step歹i」,按照發(fā)行順序?qū)⒏鱾€(gè)執(zhí)行步驟記載為SA'1、 SA'2、",、 SA'15。對(duì)于在各個(gè)線程的同一周期可以發(fā)行的指令, 裝入、保存指令只能夠發(fā)行一個(gè)指令,算術(shù)邏輯運(yùn)算以及傳輸指令能夠發(fā) 行三個(gè)指令。SA'1的指令是,Instructionl、Instrucion2和Instruction3 的三個(gè)指令中可以發(fā)行的setlo指令以及sethi指令。setlo指令是,向寄 存器r0存儲(chǔ)立即值32位(HWE—A)的低16位的指令。sethi指令是,向寄 存器r0存儲(chǔ)立即值32位(HWE—A)的高16位的指令。為了避免SA'1指 令組的沖突,在SA'2可以發(fā)行后續(xù)的st指令。SA'2的指令是st指令和 sync指令,該st指令將寄存器rl的內(nèi)容保存到以r0為地址的存儲(chǔ)空間, 該sync指令能夠進(jìn)行指令同步執(zhí)行。SA'3的指令是setlo指令和sync指 令,該setlo指令是向寄存器r2存儲(chǔ)立即值32位(HWE—ST)的低16位的 指令。SA'4的指令是sethi指令和sync指令,該sethi指令是向寄存器 r2存儲(chǔ)立即值32位(HWE—ST)的高16位的指令。SA'5的指令是ld指令, 從以寄存器rO為地址的存儲(chǔ)空間裝入來(lái)存儲(chǔ)到寄存器rl。 SA'6的指令是 add指令,將寄存器rl與立即值100的和存儲(chǔ)到寄存器rl。 SA'7的指令 是st指令,將寄存器rl的內(nèi)容保存到以r2為地址的存儲(chǔ)空間。從SA'8 到SA'14的指令是add指令,將寄存器r0與立即值1的和存儲(chǔ)到寄存器 r0。該線程A的程序A-3(圖15)是一種硬件加速器的模型,該硬件加速器, 對(duì)某硬件加速器(HWE—A)進(jìn)行寫(xiě)入,而經(jīng)過(guò)8nSec后從該地址裝入,則可 以獲得特殊的運(yùn)算結(jié)果。由于該程序工作的處理器的工作頻率為lGHz, 因此,為了空出8nSec的時(shí)間,以檢測(cè)指令同步執(zhí)行的指令后具有二個(gè)周 期的指令發(fā)行停止期間為特點(diǎn),通過(guò)從SA'2到SA'4為止的三個(gè)指令同步 執(zhí)行來(lái)空出共8nSec的時(shí)間,從而滿足從硬件加速器裝入的時(shí)間限制。在 此示出,圖5中記載的指令發(fā)行停止部1000的觸發(fā)器1020所鎖存的指 令發(fā)行停止請(qǐng)求信號(hào)1010被輸入到作為狀態(tài)機(jī)的同步控制部1060,與流 水線沖突狀態(tài)信號(hào)1030無(wú)關(guān),在二個(gè)周期的期間輸出指令發(fā)行停止?fàn)顟B(tài) 信號(hào)1050。
      根據(jù)所述說(shuō)明,通過(guò)利用本實(shí)施例涉及的指令同步執(zhí)行檢測(cè)部600和 指令發(fā)行停止部122,在多線程結(jié)構(gòu)的運(yùn)算器中,與各個(gè)線程的指令執(zhí)行 狀態(tài)無(wú)關(guān),可以確保本線程的指令執(zhí)行時(shí)間的最短時(shí)間,據(jù)此,還可以抑 制本線程的指令發(fā)行,從而對(duì)于其它線程可以提高多線程執(zhí)行性能。并且,
      25在本實(shí)施例,由于通過(guò)對(duì)多位的指令位字段進(jìn)行解碼,來(lái)進(jìn)行指令同步執(zhí) 行檢測(cè),因此,可以只對(duì)某種特定的指令進(jìn)行實(shí)時(shí)執(zhí)行。
      (實(shí)施例3)
      然而,為了進(jìn)行指令同步執(zhí)行檢測(cè),若增加對(duì)指令位字段進(jìn)行解碼而 進(jìn)行指令同步執(zhí)行檢測(cè)的專用的sync指令,則不僅需要變更指令規(guī)格,還 需要變更軟件開(kāi)發(fā)環(huán)境,因此影響大。據(jù)此,利用圖16示出的程序A-4 說(shuō)明,與實(shí)施例2相比,不生成新的指令,而以將功能幾乎相等的nop指 令擴(kuò)展的方法來(lái)可以實(shí)現(xiàn)的指令同步執(zhí)行檢測(cè)部。
      圖16示出的程序A-4中記載有指令發(fā)行部112所發(fā)行的線程A的指 令發(fā)行可能的指令組。在Step歹U,按照發(fā)行順序?qū)⒏鱾€(gè)執(zhí)行步驟記載為 SA'1、 SA'2、、 SA'15。對(duì)于在各個(gè)線程的同一周期可以發(fā)行的指令, 裝入、保存指令只能夠發(fā)行一個(gè)指令,算術(shù)邏輯運(yùn)算以及傳輸指令能夠發(fā) -斤三個(gè)指令。SA'1的指令是,Instructionl、Instrucion2和Instruction3 的三個(gè)指令中可以發(fā)行的setlo指令以及sethi指令。setlo指令是,向寄 存器r0存儲(chǔ)立即值32位(HWE—A)的低16位的指令。sethi指令是,向寄 存器r0存儲(chǔ)立即值32位(HWE—A)的高16位的指令。為了避免SA'1指 令組的沖突,在SA'2可以發(fā)行后續(xù)的st指令。SA'2的指令是st指令和 nop指令,該st指令將寄存器rl的內(nèi)容保存到以r0為地址的存儲(chǔ)空間, 該nop指令能夠進(jìn)行指令同步執(zhí)行。SA'3的指令是setlo指令和n叩指 令,該setlo指令是向寄存器r2存儲(chǔ)立即值32位(HWE—ST)的低16位的 指令,該n叩指令能夠進(jìn)行指令同步執(zhí)行。SA'4的指令是sethi指令和 nop指令,該sethi指令是向寄存器r2存儲(chǔ)立即值32位(HW^ST)的高 16位的指令,該nop指令能夠進(jìn)行指令同步執(zhí)行。SA'5的指令是ld指令, 從以寄存器rO為地址的存儲(chǔ)空間裝入來(lái)存儲(chǔ)到寄存器rl。 SA'6的指令是 add指令,將寄存器rl與立即值100與和存儲(chǔ)到寄存器rl。 SA'7的指令 是st指令,將寄存器rl的內(nèi)容保存到以r2為地址的存儲(chǔ)空間。從SA'8 到SA'14的指令是add指令,將寄存器r0與立即值1的和存儲(chǔ)到寄存器 r0。該線程A的程序A-4(圖16)是一種硬件加速器的模型,該硬件加速器, 對(duì)某硬件加速器(HWE-A)進(jìn)行寫(xiě)入,而經(jīng)過(guò)8nSec后從該地址裝入,貝何 以獲得特殊的運(yùn)算結(jié)果。由于該程序工作的處理器的工作頻率為lGHz,因此,為了空出8nSec的時(shí)間,以檢測(cè)指令同步執(zhí)行的指令后具有二個(gè)周 期的指令發(fā)行停止期間為特點(diǎn),通過(guò)從SA'2到SA'4為止的三個(gè)指令同步 執(zhí)行來(lái)空出共8nSec的時(shí)間,從而滿足從硬件加速器裝入的時(shí)間限制。在 此示出,圖5中記載的指令發(fā)行停止部1000的觸發(fā)器1020所鎖存的指 令發(fā)行停止請(qǐng)求信號(hào)1010被輸入到作為狀態(tài)機(jī)的同步控制部1060,與流 水線沖突狀態(tài)信號(hào)1030無(wú)關(guān),在二個(gè)周期的期間輸出指令發(fā)行停止?fàn)顟B(tài) 信號(hào)1050。據(jù)此,不進(jìn)行指令規(guī)格變更,也可以獲得與程序A-3(圖15) 相同的效果。 (實(shí)施例4)
      然而,即使取代sync指令而使用n叩指令,也在線程A的各個(gè)St印 需要發(fā)行二個(gè)指令。因此,有可能不能發(fā)行其它線程的能夠發(fā)行三個(gè)發(fā)行 的指令組。若解決該問(wèn)題,則可以進(jìn)一步改善性能。于是,只要在對(duì)諸如 硬件加速器之類(lèi)的專用硬件設(shè)備進(jìn)行裝入、保存指令的期間,進(jìn)行指令同 步執(zhí)行檢測(cè)即可,因此利用圖17、圖4說(shuō)明第三指令同步執(zhí)行檢測(cè)有效部、 第三指令同步執(zhí)行檢測(cè)無(wú)效部和第三指令同步模式狀態(tài)記憶部,這些部通 過(guò)使用成為硬件加速器專用的寄存器訪問(wèn)指令的wt指令以及rd指令,從 而可以提高性能。
      圖17是實(shí)施例4的指令同步執(zhí)行檢測(cè)部的內(nèi)部結(jié)構(gòu)中的、對(duì)應(yīng)于一 個(gè)線程的結(jié)構(gòu)框圖。指令發(fā)行部112具有將按每個(gè)線程成為發(fā)行對(duì)象的最 多指令數(shù)的指令(在本實(shí)施例中假設(shè)按每個(gè)線程能夠發(fā)行三個(gè)指令、能夠同 時(shí)發(fā)行的指令組是二個(gè)線程的指令組、能夠同時(shí)發(fā)行四個(gè)指令而進(jìn)行說(shuō)明) 存儲(chǔ)的指令緩沖器750,按程序計(jì)數(shù)器的順序存儲(chǔ)有第一指令碼751、第 二指令碼752、第三指令碼753、以及第一有效位754、第二有效位755、 第三有效位756,這些有效位示出是否存儲(chǔ)有有效于各個(gè)指令碼的緩沖器 的指令。輸入這些信息,指令同步執(zhí)行檢測(cè)部包括"與"門(mén)711,輸入 第一指令碼751的從位31到位24的輸出、參考表選擇器733的比較器 721的輸出和第一有效位754;"與"門(mén)712,輸入第二指令碼752的從 位31到位24的輸出、參考表選擇器733的比較器722的輸出和第二有 效位755;"與"門(mén)713,輸入第三指令碼753的從位31到位24的輸出、 參考表選擇器733的比較器723的輸出和第三有效位756;以及"或"門(mén)714,輸入"與"門(mén)711、"與"門(mén)712、"與"門(mén)713、及帶有復(fù)位的觸 發(fā)器735的輸出;作為"或"門(mén)714的輸出的指令同步執(zhí)行檢測(cè)信號(hào)790 被生成,該指令同步執(zhí)行檢測(cè)信號(hào)790示出包含需要指令同步執(zhí)行的指令。 并且,該輸出,被輸入到帶有復(fù)位的觸發(fā)器735的輸出和"異或"門(mén)734 的輸入,連接于觸發(fā)器735的數(shù)據(jù)輸入。據(jù)此,保持指令同步執(zhí)行檢測(cè)部 所檢測(cè)的指令同步執(zhí)行檢測(cè)有效狀態(tài),進(jìn)一步,根據(jù)指令同步執(zhí)行檢測(cè)部 所檢測(cè)的指令同步執(zhí)行檢測(cè)無(wú)效請(qǐng)求,可以將該有效狀態(tài)清除。再者,該 觸發(fā)器的輸出,還被用作有效參考表731和無(wú)效參考表732的選擇器733 的選擇信號(hào)。再者,為了通過(guò)指令同步執(zhí)行檢測(cè)信號(hào)示出究竟能否發(fā)行指 令緩沖器所存儲(chǔ)的指令而生成將第一有效位754原封不動(dòng)輸出的第一指 令碼有效位791;從"與"門(mén)781輸出的第二指令碼有效位792,該"與" 門(mén)781輸入第二有效位755和被反轉(zhuǎn)的"與"門(mén)711的輸出;從"與" 門(mén)782輸出的第三指令碼有效位793,該"與"門(mén)782輸入第三有效位 756、"與"門(mén)781的輸出和被反轉(zhuǎn)的"與"門(mén)712的輸出。據(jù)此,通過(guò) 指令同步執(zhí)行檢測(cè)部輸出的指令同步執(zhí)行檢測(cè)信號(hào)790,示出指令組中包 含進(jìn)行同步執(zhí)行的指令,通過(guò)第一指令碼有效位791、第二指令碼有效位 792以及第三指令碼有效位793、可以識(shí)別線程內(nèi)的可以發(fā)行指令的指令 碼。而且,圖17的指令同步執(zhí)行檢測(cè)部700只示出一個(gè)線程內(nèi)的控制信 號(hào)。在本實(shí)施例中,由于設(shè)想能夠同時(shí)執(zhí)行三個(gè)線程的處理器,因此這些 資源對(duì)每個(gè)線程都需要。但是,從以SMT能夠執(zhí)行的處理器的結(jié)構(gòu)的觀點(diǎn) 來(lái)看,當(dāng)然具有該結(jié)構(gòu),因此以后省略說(shuō)明。
      利用圖4說(shuō)明處理器狀態(tài)寄存器所存儲(chǔ)的指令同步執(zhí)行模式記憶部。 寄存器組900包括處理器狀態(tài)寄存器910、通用寄存器912 915、操作 數(shù)數(shù)據(jù)鎖存器921 924等。處理器狀態(tài)寄存器910保持SYNC位950。 該SYNC位950,根據(jù)圖17所述的指令同步執(zhí)行檢測(cè)信號(hào)790被設(shè)定以 及復(fù)位。并且,SYNC位950,在產(chǎn)生中斷處理時(shí)也被復(fù)位。
      據(jù)此,通過(guò)將處于同步模式之事宜作為處理器狀態(tài)來(lái)記憶,從而在因 中斷而產(chǎn)生線程的分支的情況下,也可以管理此狀態(tài)。
      以下,作為本實(shí)施例涉及的工作,說(shuō)明利用寄存器訪問(wèn)指令的圖18 示出的程序A-5。圖18示出的程序A-5中記載有指令發(fā)行部112所發(fā)行的線程A的指 令發(fā)行可能的指令組。在Step歹ij,按照發(fā)行順序?qū)⒏鱾€(gè)執(zhí)行步驟記載為 SA'1、 SA'2、"'、 SA'15。對(duì)于在各個(gè)線程的同一周期可以發(fā)行的指令, 裝入、保存指令只能夠發(fā)行一個(gè)指令,算術(shù)邏輯運(yùn)算以及傳輸指令能夠發(fā) 行三個(gè)指令。SA'1的指令是,Instructionl、Instrucion2禾B Instruction3 的三個(gè)指令中可以發(fā)行的setlo指令以及sethi指令。setlo指令是,向寄 存器r0存儲(chǔ)立即值32創(chuàng)HWE—A)的低16位的指令。sethi指令是,向寄 存器r0存儲(chǔ)立即值32位(HWE—A)的高16位的指令。為了避免SA1指令 組的沖突,在SA'2可以發(fā)行后續(xù)的st指令。SA'2的指令是wt指令,該 wt指令是將寄存器rl的內(nèi)容保存到以rO為地址的硬件加速器的寄存器的 指令,也是示出指令同步執(zhí)行模式的開(kāi)始的指令。通過(guò)執(zhí)行該wt指令,從 而在線程A設(shè)定指令同步執(zhí)行模式。SA'3的指令是setlo指令,向寄存器 r2存儲(chǔ)立即值32位(HWE-ST)的低16位的指令。該指令,由于以指令同 步執(zhí)行模式來(lái)執(zhí)行,因此單獨(dú)執(zhí)行。SA'4的指令是sethi指令和sync指 令,該sethi指令是向寄存器r2存儲(chǔ)立即值32位(HWE—ST)的高16位的 指令。該指令,由于以指令同步執(zhí)行模式來(lái)執(zhí)行,因此單獨(dú)執(zhí)行。SA'5的 指令是rd指令,從以寄存器r0為地址的存儲(chǔ)空間裝入來(lái)存儲(chǔ)到寄存器rl 。 根據(jù)該指令,指令同步執(zhí)行模式被解除。SA'6的指令是add指令,將寄存 器rl與立即值100的和存儲(chǔ)到寄存器rl。 SA'7的指令是st指令,將寄 存器rl的內(nèi)容保存到以r2為地址的存儲(chǔ)空間。從SA'8到SA'14的指令 是add指令,將寄存器r0與立即值1的和存儲(chǔ)到寄存器r0。該線程A的 程序A-5(圖18)是一種硬件加速器的模型,該硬件加速器,對(duì)某硬件加速 器(HWE一A)進(jìn)行寫(xiě)入,而經(jīng)過(guò)8nSec后從該地址裝入,則可以獲得特殊的 運(yùn)算結(jié)果。由于該程序工作的處理器的工作頻率為lGHz,因此,為了空 出8nSec的時(shí)間,以檢測(cè)指令同步執(zhí)行的指令后具有二個(gè)周期的指令發(fā)行 停止期間為特點(diǎn),通過(guò)從SA'2到SA'4為止的三個(gè)指令同步執(zhí)行來(lái)空出共 8nSec的時(shí)間,從而滿足從硬件加速器裝入的時(shí)間限制。在此示出,圖5 中記載的指令發(fā)行停止部1000的觸發(fā)器1020所鎖存的指令發(fā)行停止請(qǐng) 求信號(hào)1010被輸入到作為狀態(tài)機(jī)的同步控制部1060,與流水線沖突狀態(tài) 信號(hào)1030無(wú)關(guān),在二個(gè)周期的期間輸出指令發(fā)行停止?fàn)顟B(tài)信號(hào)1050。如上所述,示出指令同步執(zhí)行模式的指令同步執(zhí)行檢測(cè)信號(hào)790被生成,而 通過(guò)指令同步執(zhí)行有效指令的wt指令、和同步執(zhí)行無(wú)效指令的rd指令, 可以進(jìn)行與實(shí)施例1到3相同的工作,且可以將本線程的指令發(fā)行數(shù)變?yōu)?1,因此,不會(huì)受其它線程的指令發(fā)行。 (實(shí)施例5)
      然而,雖然具有記憶指令同步執(zhí)行模式的部,但是,在接受中斷的情 況下,由于中斷處理所需要的時(shí)間更長(zhǎng),因此若具有解除該指令同步執(zhí)行 模式的構(gòu)造,則可以減少不需要的指令同步執(zhí)行模式的期間。據(jù)此,既然 可以改善對(duì)于其它線程的性能,還可以對(duì)于本線程,以中斷處理時(shí)間來(lái)隱 蔽向硬件加速器的等待時(shí)間。
      在本實(shí)施例中,利用與實(shí)施例3的圖17的改善電路相對(duì)應(yīng)的圖19進(jìn) 行說(shuō)明。
      圖19是實(shí)施例5的指令同步執(zhí)行檢測(cè)部的內(nèi)部結(jié)構(gòu)中的、對(duì)應(yīng)于一 個(gè)線程的結(jié)構(gòu)框圖。指令發(fā)行部112具有將按每個(gè)線程成為發(fā)行對(duì)象的最 多指令數(shù)的指令(在本實(shí)施例中假設(shè)按每個(gè)線程能夠發(fā)行三個(gè)指令、能夠同 時(shí)發(fā)行的指令組是二個(gè)線程的指令組、能夠同時(shí)發(fā)行四個(gè)指令而進(jìn)行說(shuō)明) 存儲(chǔ)的指令緩沖器850,按程序計(jì)數(shù)器的順序存儲(chǔ)有第一指令碼851、第 二指令碼852、第三指令碼853、以及第一有效位854、第二有效位855、 第三有效位856,這些有效位示出是否存儲(chǔ)有有效于各個(gè)指令碼的緩沖器 的指令。輸入這些信息,指令同步執(zhí)行檢測(cè)部包括"與"門(mén)811,輸入 第一指令碼851的從位31到位24的輸出、參考表選擇器833的比較器 821的輸出和第一有效位854;"與"門(mén)812,輸入第二指令碼852的從 位31到位24的輸出、參考表選擇器833的比較器822的輸出和第二有 效位855;"與"門(mén)813,輸入第三指令碼853的從位31到位24的輸出、 參考表選擇器833的比較器823的輸出和第三有效位856;以及"或"門(mén) 814,輸入"與"門(mén)811、"與"門(mén)812、"與"門(mén)813、及帶有復(fù)位的觸 發(fā)器835的輸出;作為"或"門(mén)814的輸出的指令同步執(zhí)行檢測(cè)信號(hào)890 被生成,該指令同步執(zhí)行檢測(cè)信號(hào)890示出包含需要指令同步執(zhí)行的指令。 并且,該輸出,被輸入到帶有復(fù)位的觸發(fā)器835的輸出和"異或"門(mén)834 的輸入,連接于觸發(fā)器835的數(shù)據(jù)輸入。還包括"與"門(mén)837,向觸發(fā)
      30器835的復(fù)位端子輸入中斷受理信號(hào)的反轉(zhuǎn)信號(hào)和復(fù)位信號(hào)。據(jù)此,保持 指令同步執(zhí)行檢測(cè)部所檢測(cè)的指令同步執(zhí)行檢測(cè)有效狀態(tài),進(jìn)一步,根據(jù) 指令同步執(zhí)行檢測(cè)部所檢測(cè)的指令同步執(zhí)行檢測(cè)無(wú)效請(qǐng)求、或在受理中斷 受理時(shí),可以將該有效狀態(tài)清除。再者,該觸發(fā)器的輸出,也被用作有效 參考表831和無(wú)效參考表832的選擇器833的選擇信號(hào)。再者,為了通 過(guò)指令同步執(zhí)行檢測(cè)信號(hào)示出究竟能否發(fā)行指令緩沖器所存儲(chǔ)的指令而生 成將第一有效位854原封不動(dòng)輸出的第一指令碼有效位891;從"與" 門(mén)881輸出的第二指令碼有效位892,該"與"門(mén)881輸入第二有效位 855和被反轉(zhuǎn)的"與"門(mén)811的輸出;從"與"門(mén)882輸出的第三指令碼 有效位893,該"與"門(mén)882輸入第三有效位856、"與"門(mén)881的輸出 和被反轉(zhuǎn)的"與"門(mén)812的輸出。據(jù)此,通過(guò)指令同步執(zhí)行檢測(cè)部輸出的 指令同步執(zhí)行檢測(cè)信號(hào)890,示出指令組中包含進(jìn)行同步執(zhí)行的指令,通 過(guò)第一指令碼有效位891、第二指令碼有效位892以及第三指令碼有效位 893、可以識(shí)別線程內(nèi)的可以發(fā)行指令的指令碼。而且,圖19的指令同步 執(zhí)行檢測(cè)部800只示出一個(gè)線程內(nèi)的控制信號(hào)。在本實(shí)施例中,由于設(shè)想 能夠同時(shí)執(zhí)行三個(gè)線程的處理器,因此這些資源對(duì)每個(gè)線程都需要。 (實(shí)施例6)
      然而,對(duì)于實(shí)施例1到5所述的指令發(fā)行停止部,停止發(fā)行的周期數(shù) 是固定的。實(shí)際上,由于處理器有可能以各種工作頻率被LSI化,因此為 了保障實(shí)時(shí)的期間,需要具有可編程的結(jié)構(gòu)。于是,利用與實(shí)施例1的圖 5的改善電路相對(duì)應(yīng)的圖20進(jìn)行說(shuō)明。
      圖20是示出實(shí)施例6的對(duì)應(yīng)于一個(gè)線程的指令發(fā)行停止部的結(jié)構(gòu)的 框圖。指令發(fā)行停止部1100輸入通過(guò)指令同步執(zhí)行檢測(cè)部121所輸出的 指令同步執(zhí)行檢測(cè)信號(hào)590來(lái)獲得的指令發(fā)行停止請(qǐng)求信號(hào)1110、和通 過(guò)指令發(fā)行部212以及運(yùn)算執(zhí)行部230獲得的關(guān)于流水線沖突的流水線沖 突狀態(tài)信號(hào)1130。指令發(fā)行停止部1100包括觸發(fā)器1120,輸入指令 發(fā)行停止請(qǐng)求信號(hào)1110、和使用于指令傳遞部的時(shí)鐘信號(hào)1121;作為狀 態(tài)機(jī)的同步控制部1160,輸入觸發(fā)器1120的輸出,且生成示出發(fā)行停止 期間的信號(hào);以及作為狀態(tài)機(jī)的沖突檢測(cè)部1131,輸入流水線沖突狀態(tài)信 號(hào)1130,且生成示出發(fā)行停止期間的信號(hào);同步控制部1160連接于停止期間記憶部1181,該停止期間記憶部1181連接于10總線1182;同步 控制部1160的狀態(tài)機(jī),以停止期間記憶部1181所記憶的周期數(shù)來(lái)使指 令發(fā)行禁止?fàn)顟B(tài)信號(hào)斷言(assert)。指令發(fā)行停止部1100包括同步控制部 1160、和從沖突檢測(cè)部1131輸入的"或"門(mén)1140。據(jù)此,"或"門(mén)1140 的輸出的指令發(fā)行停止?fàn)顟B(tài)信號(hào)1150,被生成為指令發(fā)行停止部1100的 輸出信號(hào),依據(jù)指令發(fā)行停止?fàn)顟B(tài)信號(hào)1150可以生成示出在下一個(gè)周期 不能發(fā)行本線程的信號(hào)。而且,圖20的指令發(fā)行停止部只示出一個(gè)線程內(nèi) 的控制信號(hào)。在本實(shí)施例中,由于設(shè)想能夠同時(shí)執(zhí)行三個(gè)線程的處理器, 因此這些資源對(duì)每個(gè)線程都需要。但是,從以SMT能夠執(zhí)行的處理器的結(jié) 構(gòu)的觀點(diǎn)來(lái)看,當(dāng)然具有該結(jié)構(gòu),因此以后省略說(shuō)明。 (實(shí)施例7)
      然而,存在為了實(shí)現(xiàn)實(shí)時(shí)保障,而處理器的工作頻率、或處理器和硬 件加速器的工作頻率比被動(dòng)態(tài)地變更的情況。在該情況下,本發(fā)明中還需 要保障實(shí)時(shí)(幾個(gè)nSec)的期間。于是,禾,圖21說(shuō)明對(duì)于指令發(fā)行停止 部以具有工作頻率檢測(cè)部為特點(diǎn)的運(yùn)算處理裝置,該工作頻率檢測(cè)部獲得 處理器的工作頻率、或處理器和硬件加速器的工作頻率比。
      圖21是示出實(shí)施例7的對(duì)應(yīng)于一個(gè)線程的指令發(fā)行停止部的結(jié)構(gòu)的 框圖。指令發(fā)行停止部1200輸入通過(guò)指令同步執(zhí)行檢測(cè)部121所輸出的 指令同步執(zhí)行檢測(cè)信號(hào)590來(lái)獲得的指令發(fā)行停止請(qǐng)求信號(hào)1210、和通 過(guò)指令發(fā)行部212以及運(yùn)算執(zhí)行部230獲得的關(guān)于流水線沖突的流水線沖 突狀態(tài)信號(hào)1230。指令發(fā)行停止部1200包括觸發(fā)器1220,輸入指令 發(fā)行停止請(qǐng)求信號(hào)1210、和使用于指令傳遞部的時(shí)鐘信號(hào)1221;作為狀 態(tài)機(jī)的同步控制部1260,輸入觸發(fā)器1220的輸出,且生成示出發(fā)行停止 期間的信號(hào);以及,作為狀態(tài)機(jī)的沖突檢測(cè)部1231,輸入流水線沖突狀態(tài) 信號(hào)1230,且生成示出發(fā)行停止期間的信號(hào)同步控制部1160連接于停止 期間記憶部1281,該停止期間記憶部1281連接于10總線1282;同步 控制部1260的狀態(tài)機(jī),以停止期間記憶部1281所記憶的周期數(shù)來(lái)使指 令發(fā)行禁止?fàn)顟B(tài)信號(hào)斷言。還包括工作頻率檢測(cè)部1283,可以獲得正在工 作中的處理器的工作頻率、或處理器和硬件加速器的工作頻率比,而停止 期間記憶部1281,根據(jù)工作頻率檢測(cè)部1283所記憶的信息,査找停止期間記憶部的設(shè)定值并將其輸出給同步控制部1260。指令發(fā)行停止部1200 包括同步控制部1260、和從沖突檢測(cè)部1231輸入的"或"門(mén)1240。據(jù) 此,"或"門(mén)1240的輸出的指令發(fā)行停止?fàn)顟B(tài)信號(hào)1250,被生成為指令 發(fā)行停止部1200的輸出信號(hào),依據(jù)指令發(fā)行停止?fàn)顟B(tài)信號(hào)1260可以生 成示出在下一個(gè)周期不能發(fā)行本線程的信號(hào)。而且,圖21的指令發(fā)行停止 部只示出一個(gè)線程內(nèi)的控制信號(hào)。在本實(shí)施例中,由于設(shè)想能夠同時(shí)執(zhí)行 三個(gè)線程的處理器,因此這些資源對(duì)每個(gè)線程都需要。但是,從以SMT能 夠執(zhí)行的處理器的結(jié)構(gòu)的觀點(diǎn)來(lái)看,當(dāng)然具有該結(jié)構(gòu),因此以后省略說(shuō)明。 (實(shí)施例8)
      然而,對(duì)于以SMT執(zhí)行的方法,可以設(shè)想幾種工作模式。例如,對(duì)于 以SMT能夠執(zhí)行三個(gè)線程的處理器,也產(chǎn)生如圖11所述以循環(huán)來(lái)調(diào)解三 個(gè)線程的三個(gè)線程等價(jià)模式,或產(chǎn)生將二個(gè)線程作為優(yōu)先線程,而將剩下 的一個(gè)線程作為候補(bǔ)執(zhí)行的情況。在該情況下,調(diào)解指令的定時(shí),根據(jù)本 線程是優(yōu)先線程還是候補(bǔ)線程而改變。于是,本實(shí)施例中,利用圖22說(shuō)明 具有性能保障工作模式檢測(cè)部的運(yùn)算處理裝置,該性能保障工作模式檢測(cè) 部檢測(cè)本線程作為優(yōu)先線程被分配、還是作為候補(bǔ)線程被分配,而對(duì)指令 同步執(zhí)行期間進(jìn)行切換。
      圖22是示出實(shí)施例8的對(duì)應(yīng)于一個(gè)線程的指令發(fā)行停止部的結(jié)構(gòu)的 框圖。該圖的指令發(fā)行停止部中,對(duì)于圖21,增加了性能保障工作模式檢 測(cè)部。
      性能保障工作模式檢測(cè)部1385,檢測(cè)是否為優(yōu)先于其它線程的工作模 式。例如,檢測(cè)本線程是優(yōu)先線程還是候補(bǔ)線程。
      停止期間記憶部1381,按每個(gè)工作模式記憶表示停止期間的周期數(shù)。 對(duì)于被記憶的周期數(shù),在工作模式是候補(bǔ)線程的情況下的停止期間的周期 數(shù),可以比在優(yōu)先線程的情況下的停止期間的周期數(shù)少。
      所述停止期間記憶部,在按照檢測(cè)到的工作模式的周期數(shù)的期間停止 所述后續(xù)指令的停止。
      據(jù)此,在本線程為優(yōu)先線程的情況下、和候補(bǔ)線程的情況下,都可以 保證性能。
      (實(shí)施例9)
      33在運(yùn)算處理裝置中,由于可以設(shè)定在指令同步執(zhí)行模式中可以發(fā)行的 指令數(shù),因此,即使不生成用于填充不必要的指令槽的偽指令也可以控制 指令發(fā)行數(shù)。
      利用與實(shí)施例1到實(shí)施例7的圖3到圖4的改善電路相對(duì)應(yīng)的圖23、 圖24進(jìn)行說(shuō)明。
      圖23是實(shí)施例9的指令同步執(zhí)行檢測(cè)部的內(nèi)部結(jié)構(gòu)中與一個(gè)線程相 對(duì)應(yīng)的結(jié)構(gòu)的框圖。與圖17相比,在圖23的指令同步執(zhí)行檢測(cè)部中,增 加了指令同步執(zhí)行指令發(fā)行數(shù)記憶部1485。
      指令同步執(zhí)行指令發(fā)行數(shù)記憶部1485,記憶在指令同步執(zhí)行模式中可 以發(fā)行的指令數(shù),而在每次發(fā)行時(shí)進(jìn)行倒計(jì)數(shù)。據(jù)此,由于在指令同步執(zhí) 行模式中可以發(fā)行nop等偽指令以外的有效的指令,因此可以提高線程的 處理效率。
      (實(shí)施例10)
      然而,雖然存在利用所述的指令同步檢測(cè)部保障實(shí)時(shí)的最短時(shí)間的情 況,但是,由于C描述的程序中也存在可以先行進(jìn)行處理的程序,因此, 在編譯器檢測(cè)到這些指令碼的情況下,可以取代進(jìn)行指令同步的指令而插 入這些指令碼,從而支持進(jìn)行相等的處理。于是,通過(guò)在編譯處理的過(guò)程 中向C源程序插入編譯指示,從而可以將指令同步執(zhí)行模式中的本線程的 能夠先行處理的指令提前來(lái)插入到程序。
      圖26是實(shí)施例10的程序轉(zhuǎn)換裝置的結(jié)構(gòu)框圖。該圖的程序轉(zhuǎn)換裝置 包括編譯器l、匯編器18、鏈接器19。編譯器1包括語(yǔ)法解析部10、中 間代碼生成部ll、最佳化部12、代碼生成部13。通過(guò)使發(fā)揮各個(gè)功能框 的功能的軟件在計(jì)算機(jī)上執(zhí)行,從而可以實(shí)現(xiàn)該圖的程序轉(zhuǎn)換裝置。
      編譯器1,將以高級(jí)語(yǔ)言描述的程序轉(zhuǎn)換為匯編語(yǔ)言程序。高級(jí)語(yǔ)言 程序是,例如C語(yǔ)言等。
      語(yǔ)法解析部IO,解析C語(yǔ)言等高級(jí)語(yǔ)言程序P1的語(yǔ)法。中間代碼生 成部11,生成根據(jù)解析結(jié)果將高級(jí)語(yǔ)言程序P置換為中間代碼(以下,簡(jiǎn) 單的稱為指令。)的描述的中間代碼指令串P2。
      最佳化部12,對(duì)包含用于同步執(zhí)行的特定指令的中間代碼指令串P2 進(jìn)行最佳化處理。因此,最佳化部12包括編譯指示抽出部14、指令檢測(cè)部15、特定指令設(shè)定部16、周期數(shù)指令數(shù)設(shè)定部17。
      編譯指示抽出部14,從中間代碼指令串P2的程序中,抽出與對(duì)程序轉(zhuǎn) 換裝置的特定指令有關(guān)的指示語(yǔ)句(編譯指示)。在圖27示出程序的例子。 為了便于說(shuō)明,舉例示出,該程序D-l,不是中間碼,而是包含在一部分 以匯編語(yǔ)言描述的程序的高級(jí)語(yǔ)言程序。該圖中倒數(shù)第三行的以 "#pragma"開(kāi)始的行是與特定指令有關(guān)的指示語(yǔ)句(編譯指示)。并且, 第八行的wt指令和第十行的rd指令之間,插入有在第一行所定義的二個(gè) nop指令。由于是指令同步執(zhí)行模式,因此二個(gè)nop指令作為特定指令被 插入。
      指令檢測(cè)部15,根據(jù)所述指示語(yǔ)句,從中間代碼指令串P2的程序中, 抽出向外部裝置寫(xiě)入處理請(qǐng)求的第一指令(wt指令)、從該外部裝置讀出應(yīng) 答的第二指令(rd指令)、以及特定指令。在圖27中,wt指令被檢測(cè)為第 一指令且特定指令,rd指令被檢測(cè)為第二指令,而且,被插入到第八行的 二個(gè)nop指令也被檢測(cè)為特定指令。
      指令設(shè)定部16,在第二指令(rd指令)以后的指令,中若存在與n叩 指令相同的周期數(shù)的可置換的指令,則通過(guò)將第二指令以后的指令提前到 第一指令到第二指令之間而與nop指令置換,從而生成第二程序。
      周期數(shù)指令數(shù)設(shè)定部17,將圖21、圖22示出的在停止期間記憶部設(shè) 定停止周期數(shù)的指令、或圖23、圖24示出的在指令同步執(zhí)行指令發(fā)行數(shù) 記憶部設(shè)定指令數(shù)的指令等,插入到中間代碼指令串P2的程序。
      代碼生成部13,根據(jù)由最佳化部12增加了所述指令的中間代碼指令 串P2,生成匯編語(yǔ)言的指令串(助記形式的指令串)。
      匯編器18,將匯編語(yǔ)言的指令串轉(zhuǎn)換為機(jī)械語(yǔ)言指令串。鏈接器19, 通過(guò)鏈接多個(gè)機(jī)械語(yǔ)言指令串,從而生成執(zhí)行文件。
      圖25示出未最佳化的程序的例子A-6,圖18示出最佳化后的程序的 例子A-5。圖25和圖18相比,如圖18的SA'3、 SA'4示出,通過(guò)進(jìn)行 最佳化,二個(gè)n叩指令被置換為setlo指令和sethi指令。據(jù)此,可以提 高圖18的程序的處理效率。
      而且,實(shí)施例4的程序轉(zhuǎn)換裝置,在匯編器內(nèi)向中間代碼指令串P2 插入所述的指令,但也可以是(A)向高級(jí)語(yǔ)言程序Pl插入與所述的指令相對(duì)應(yīng)的程序語(yǔ)句(函數(shù)等);(B)向匯編語(yǔ)言指令串插入與所述的指令相對(duì) 應(yīng)的助記指令;或(C)向機(jī)械語(yǔ)言指令串插入與所述的指令相對(duì)應(yīng)的機(jī)械語(yǔ) 言指令。
      而且,在所述各個(gè)實(shí)施例中,說(shuō)明了以SMT能夠執(zhí)行的處理器,但也 可以適用于VLIW(Very Long Instruction Word :超長(zhǎng)指令字)處理器。
      本發(fā)明的指令同步執(zhí)行檢測(cè)部、指令發(fā)行停止部、以及指令同步執(zhí)行 指令發(fā)行數(shù)記憶部,有用于多線程化的處理器系統(tǒng)中的指令執(zhí)行周期的同 步方法,并且,不變更基本的控制結(jié)構(gòu),也通過(guò)取指令發(fā)行部的控制的邏 輯和,從而可以以細(xì)粒度的期間(周期單位)保障指令執(zhí)行周期。
      權(quán)利要求
      1、一種運(yùn)算處理裝置,在同一周期可以執(zhí)行多個(gè)指令,其特征在于,包括指令讀取單元,讀取多個(gè)指令碼;指令發(fā)行單元,將所述指令讀取單元所讀取的多個(gè)指令碼,分割為由能夠同時(shí)發(fā)行的指令組成的一個(gè)以上的指令組,從而發(fā)行指令組的指令碼;指令解碼單元,對(duì)所述指令發(fā)行單元所發(fā)行的一個(gè)以上的指令碼進(jìn)行解碼,從而生成運(yùn)算所需要的控制信號(hào);以及運(yùn)算處理單元,根據(jù)所述指令解碼單元所生成的所述控制信號(hào)進(jìn)行運(yùn)算,所述指令發(fā)行單元,具有檢測(cè)單元,檢測(cè)特定指令,所述特定指令指示只在剛發(fā)行特定指令后的規(guī)定的周期期間停止發(fā)行后續(xù)于所述特定指令的指令;以及指令發(fā)行停止單元,只在剛發(fā)行所述特定指令后的規(guī)定的周期期間停止發(fā)行所述后續(xù)的指令。
      2、 如權(quán)利要求1所述的運(yùn)算處理裝置,其特征在于, 所述指令發(fā)行單元,在檢測(cè)出所述特定指令的情況下,將后續(xù)于所述特定指令的指令從包含所述特定指令的指令組中除外。
      3、 如權(quán)利要求2所述的運(yùn)算處理裝置,其特征在于, 所述指令讀取單元,從多個(gè)線程中分別讀取指令碼, 所述指令發(fā)行單元,按每個(gè)線程將線程中的指令串分割為指令組。
      4、 如權(quán)利要求2所述的運(yùn)算處理裝置,其特征在于, 所述檢測(cè)單元,依據(jù)指令碼中的1位的指令位字段來(lái)檢測(cè)所述特定指令。
      5、 如權(quán)利要求2所述的運(yùn)算處理裝置,其特征在于,所述檢測(cè)單元,通過(guò)對(duì)指令碼中的多位的指令位字段進(jìn)行解碼,從而 檢測(cè)所述特定指令。
      6、 如權(quán)利要求2所述的運(yùn)算處理裝置,其特征在于, 所述檢測(cè)單元,通過(guò)對(duì)指令碼中的多位的指令位字段進(jìn)行解碼,從而檢測(cè)第一指令以及第二指令,將從所述第一指令直到所述第二指令之前的 各個(gè)指令作為所述特定指令來(lái)檢測(cè)。
      7、 如權(quán)利要求6所述的運(yùn)算處理裝置,其特征在于, 所述第一指令是向外部裝置寫(xiě)入處理請(qǐng)求的指令,所述第二指令是從該外部裝置讀出應(yīng)答的指令。
      8、 如權(quán)利要求6所述的運(yùn)算處理裝置,其特征在于, 所述運(yùn)算處理裝置,還具有處理器狀態(tài)寄存器,該處理器狀態(tài)寄存器保持狀態(tài)信號(hào),該狀態(tài)信號(hào)示出正在處于停止發(fā)行所述后續(xù)指令的狀態(tài)。
      9、 如權(quán)利要求6所述的運(yùn)算處理裝置,其特征在于, 所述運(yùn)算處理裝置,還具有保持單元,保持狀態(tài)信號(hào),該狀態(tài)信號(hào)示出剛發(fā)行所述特定指令后的規(guī)定的周期期間、且正在處于停止發(fā)行所述后 續(xù)指令的狀態(tài),所述檢測(cè)單元,在檢測(cè)出所述第一指令時(shí)將所述狀態(tài)信號(hào)變?yōu)橛行В?在檢測(cè)出所述第二指令時(shí)將所述狀態(tài)信號(hào)變?yōu)闊o(wú)效。
      10、 如權(quán)利要求9所述的運(yùn)算處理裝置,其特征在于, 所述保持單元,通過(guò)中斷處理的發(fā)生來(lái)將所保持的狀態(tài)信號(hào)變?yōu)闊o(wú)效。
      11、 如權(quán)利要求1所述的運(yùn)算處理裝置,其特征在于, 所述特定指令,后續(xù)于向外部裝置請(qǐng)求處理的指令,該外部裝置與所述運(yùn)算處理裝置連接。
      12、 如權(quán)利要求1所述的運(yùn)算處理裝置,其特征在于, 所述指令發(fā)行停止單元,具有周期數(shù)記憶單元,記憶示出所述規(guī)定的周期期間的周期數(shù),并以所記憶的周期數(shù)來(lái)停止發(fā)行所述后續(xù)指令。
      13、 如權(quán)利要求12所述的運(yùn)算處理裝置,其特征在于, 所述周期數(shù)記憶單元,記憶與所述運(yùn)算處理裝置的工作頻率相對(duì)應(yīng)的周期數(shù)。
      14、 如權(quán)利要求12所述的運(yùn)算處理裝置,其特征在于, 所述周期數(shù)記憶單元,記憶與所述運(yùn)算處理裝置可以工作的多個(gè)工作頻率相對(duì)應(yīng)的多個(gè)周期數(shù)。
      15、 如權(quán)利要求1所述的運(yùn)算處理裝置,其特征在于, 所述指令發(fā)行單元,具有工作模式檢測(cè)單元,檢測(cè)工作模式是否是使所述特定指令所屬的線程優(yōu)先于其它線程的工作模式,所述指令發(fā)行停止單元,按照檢測(cè)出的工作模式,只在所述規(guī)定的周 期期間停止發(fā)行所述后續(xù)指令。
      16、 如權(quán)利要求1所述的運(yùn)算處理裝置,其特征在于, 所述指令發(fā)行單元,具有工作模式檢測(cè)單元以及周期數(shù)記憶單元,所述工作模式檢測(cè)單元,檢測(cè)工作模式是否是使所述特定指令所屬的線程優(yōu) 先于其它線程的工作模式,所述周期數(shù)記憶單元,按每個(gè)工作模式記憶示 出所述規(guī)定的周期期間的周期數(shù),所述指令發(fā)行停止單元,只在按照檢測(cè)出的工作模式的周期數(shù)的期間 停止發(fā)行所述后續(xù)指令。
      17、 如權(quán)利要求6所述的運(yùn)算處理裝置,其特征在于, 所述指令發(fā)行單元,具有指令數(shù)記憶單元,記憶在所述第一指令到所述第二指令之間可以發(fā)行的指令數(shù),在每次發(fā)行時(shí)進(jìn)行倒計(jì)數(shù)。
      18、 如權(quán)利要求10所述的運(yùn)算處理裝置,其特征在于, 所述運(yùn)算處理裝置,還具有處理器狀態(tài)寄存器,該處理器狀態(tài)寄存器保持所述保持單元所保持的狀態(tài)信號(hào)的值,所述指令發(fā)行停止單元,具有指令數(shù)記憶單元,在所述保持單元保持 示出正在處于停止發(fā)行所述后續(xù)指令的狀態(tài)的狀態(tài)信號(hào)的情況下,記憶在 所述第一指令到所述第二指令之間可以發(fā)行的指令數(shù),在每次發(fā)行時(shí)進(jìn)行 倒計(jì)數(shù)。
      19、 一種處理器,同時(shí)發(fā)行并執(zhí)行構(gòu)成由能夠同時(shí)執(zhí)行的指令組成的指令組的指令,其 特征在于,所述處理器,執(zhí)行包含特定指令的程序,所述特定指令,指示將后續(xù)于所述特定指令的指令從包含所述特定指 令的指令組中除外,并且,指示只在剛發(fā)行所述特定指令后的規(guī)定的周期 期間停止發(fā)行后續(xù)的指令。
      20、 如權(quán)利要求19所述的處理器,其特征在于, 所述處理器是多線程處理器,讀取多個(gè)線程,按每個(gè)線程將線程中的指令串分割為指令組。
      21、 一種程序轉(zhuǎn)換裝置,將第一程序轉(zhuǎn)換為第二程序,其特征在于,具有抽出單元,從第一程序中抽出指示語(yǔ)句,該指示語(yǔ)句指示程序轉(zhuǎn)換裝置設(shè)定特定指令;檢測(cè)單元,根據(jù)第一程序中的所述指示語(yǔ)句,檢測(cè)第一指令和第二指 令,該第一指令向外部裝置請(qǐng)求處理,所述第二指令從該外部裝置讀出應(yīng) 答;以及生成單元,通過(guò)在從所述第一指令到第二指令為止的期間設(shè)定特定指 令,從而生成第二程序,所述特定指令,指示將后續(xù)于所述特定指令的指令從包含所述特定指 令的指令組中除外,并且,指示只在剛發(fā)行所述特定指令后的規(guī)定的周期 期間停止發(fā)行后續(xù)的指令。
      22、 一種計(jì)算機(jī)可讀的程序,使計(jì)算機(jī)具有程序轉(zhuǎn)換裝置的功能,該 程序轉(zhuǎn)換裝置,將第一程序轉(zhuǎn)換為第二程序,所述程序,其特征在于,使 計(jì)算機(jī)執(zhí)行以下步驟;抽出步驟,從第一程序中抽出與對(duì)程序轉(zhuǎn)換裝置的特定指令有關(guān)的指 示語(yǔ)句;檢測(cè)步驟,檢測(cè)第一程序中的第一指令和第二指令,該第一指令向外 部裝置寫(xiě)入處理請(qǐng)求,所述第二指令從該外部裝置讀出應(yīng)答;以及生成步驟,通過(guò)在從所述第一指令到第二指令為止的期間將所述第二 指令以后的指令提前來(lái)配置,從而生成第二程序,所述特定指令,指示將后續(xù)于所述特定指令的指令從包含所述特定指 令的指令組中排除,并且,指示只在剛發(fā)行所述特定指令后的規(guī)定的周期 期間停止發(fā)行后續(xù)的指令。
      全文摘要
      提供一種運(yùn)算處理裝置,該運(yùn)算處理裝置在與硬件加速器同步的情況下,可以以最短周期來(lái)保障指令的執(zhí)行的實(shí)時(shí)。本發(fā)明的處理器,同時(shí)發(fā)行并執(zhí)行構(gòu)成由能夠同時(shí)執(zhí)行的指令組成的指令組的指令,所述處理器,執(zhí)行包含特定指令的程序,所述特定指令,指示將后續(xù)于所述特定指令的指令從包含所述特定指令的指令組中除外,并且,指示只在剛發(fā)行所述特定指令后的規(guī)定的周期期間停止發(fā)行后續(xù)的指令。
      文檔編號(hào)G06F9/38GK101425006SQ20081017381
      公開(kāi)日2009年5月6日 申請(qǐng)日期2008年10月29日 優(yōu)先權(quán)日2007年10月29日
      發(fā)明者尾崎伸治, 山本崇夫, 掛田雅英 申請(qǐng)人:松下電器產(chǎn)業(yè)株式會(huì)社
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1