專利名稱:處理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種處理器,該處理器能夠同時執(zhí)行多個線程,通過有效率地收發(fā)多個線程間共享的數(shù)據(jù),提高運算效率。
背景技術(shù):
進(jìn)行數(shù)字化影像數(shù)據(jù)、聲音數(shù)據(jù)等的壓縮、解壓縮等的媒體處理的運算量非常大。因此,正普及一種用于進(jìn)行媒體處理的專用硬件和高性能的DSP(Digital Signal ftOcessor,數(shù)字信號處理器)等。這種媒體處理中,實用有很多種規(guī)格,包括MPEG (Moving Picture Experts Group,動態(tài)圖像專家組)-2、MPEG-4、H. 263, H. 264 等。因此,要求數(shù)字 AV (Audio-Visual, 視聽)設(shè)備應(yīng)對多種規(guī)格的媒體處理。而且,各媒體處理應(yīng)用的復(fù)雜度提高,圖像尺寸、聲音的通道數(shù)等也有增加的傾向,運算量也進(jìn)一步地增大。因此,使用通過同時執(zhí)行多個程序而大幅提高運算效率的高性能的多線程處理器 (例如,參照非專利文獻(xiàn)1)來提高性能。多線程處理器中,在同時執(zhí)行多個線程(程序)時,一個線程與另一線程存在依存關(guān)系,例如,有如下情況在執(zhí)行完一個線程的規(guī)定的寫入指令之后,通過另一線程執(zhí)行對由該規(guī)定的寫入指令寫入的部位的數(shù)據(jù)進(jìn)行讀出的讀出指令。作為實現(xiàn)該情況的處理的方法,專利文獻(xiàn)1公開了該技術(shù)。專利文獻(xiàn)1中,通過管理存儲器區(qū)域的地址來實現(xiàn)兩者的依存關(guān)系。具體為,在專利文獻(xiàn)1的技術(shù)中,對于所管理著的地址,當(dāng)執(zhí)行一個線程的寫入指令時,能夠由另一線程訪問該地址示出的區(qū)域,即能夠進(jìn)行讀出?,F(xiàn)有技術(shù)文獻(xiàn)專利文獻(xiàn)專利文獻(xiàn)1 日本特表2006-500639號公報非專利文獻(xiàn)非專利文獻(xiàn)1:『、本〉一& “夕一-一夕,一今于夕子Y定量的了口一 ★第4版』,株式會社翔泳社,ρ·185-192 (ISBN978-4-7981-1440-8)發(fā)明概要發(fā)明要解決的課題在由上述的技術(shù)中,依存關(guān)系如果針對一個寫入指令則是有效的,但不能應(yīng)對如下情況例如,針對由一個地址表示的存儲器區(qū)域,在執(zhí)行多次寫入指令之后進(jìn)行讀出指令的情況。這是因為將管理對象設(shè)為地址,在執(zhí)行最初的寫入指令時,由另一線程對以同一地址表示的存儲器區(qū)域執(zhí)行讀出指令。因此,不能確保在執(zhí)行多個寫入指令之后執(zhí)行讀出指令這樣的依存關(guān)系。
發(fā)明內(nèi)容
因此,本發(fā)明的目的在于,提供一種能夠保持多個指令和一個讀出指令之間的依存關(guān)系的處理器及方法。用于解決課題的手段為了達(dá)成上述目的,本發(fā)明是執(zhí)行多個多個線程的處理器,其特征在于,該處理器具有設(shè)定單元,在執(zhí)行一個線程中的確保向存儲器區(qū)域完成了寫入的位置上存在的指令時,對表示是否向該存儲器區(qū)域完成了寫入的利用信息,設(shè)定表示該一個線程向該存儲器區(qū)域完成了寫入之意的內(nèi)容,上述一個線程向上述存儲器區(qū)域進(jìn)行寫入,上述存儲器區(qū)域由上述一個線程與另一線程共同利用;以及控制單元,在上述利用信息表示上述一個線程向上述存儲器區(qū)域完成了寫入的情況下,執(zhí)行其他線程讀出上述存儲器區(qū)域中存在的數(shù)據(jù)的讀出指令,在上述利用信息表示上述一個線程向上述存儲器區(qū)域未完成寫入的情況下, 抑制執(zhí)行該讀出指令。發(fā)明的效果根據(jù)上述結(jié)構(gòu),處理器通過在執(zhí)行一個線程中的確保向存儲器區(qū)域完成了寫入的位置上存在的指令,進(jìn)行對基于另一線程的該存儲器區(qū)域中存在的數(shù)據(jù)的讀出,上述一個線程向上述存儲器區(qū)域進(jìn)行寫入,上述存儲器區(qū)域由上述一個線程與另一線程共同利用。 艮口,處理器在確保在該位置上存在的指令被執(zhí)行之前執(zhí)行著存在的指令的基礎(chǔ)上,能夠由另一線程讀出該存儲器區(qū)域中存在的數(shù)據(jù)。由此,處理器能夠保持例如在多次執(zhí)行寫入指令之后執(zhí)行讀出指令的依存關(guān)系。
圖1是表示多線程處理器100的結(jié)構(gòu)的圖。圖2(a)是表示訪問管理表格TlOO的數(shù)據(jù)構(gòu)造的一例的圖,圖2(b)是Read(讀取)訪問管理表格T150的數(shù)據(jù)構(gòu)造的一例的圖。圖3是表示讀出檢測部116及指令檢測部117的結(jié)構(gòu)的圖。圖4是表示在指令檢測部117進(jìn)行的動作的流程圖。圖5是表示Read訪問管理表格T150的更新的動作的流程圖。圖6是表示執(zhí)行Read指令時的動作的流程圖。圖7是表示多線程處理器1100的結(jié)構(gòu)的圖。圖8是表示地址變換部1130的結(jié)構(gòu)、及變換表格T200的數(shù)據(jù)構(gòu)造的一例的圖。圖9是表示多線程處理器2100的結(jié)構(gòu)的圖。圖10是表示地址變換部2130的結(jié)構(gòu)、及變換表格T300的數(shù)據(jù)構(gòu)造的一例的圖。圖11是表示多核處理器系統(tǒng)3000的硬件結(jié)構(gòu)的圖。圖12是表示將多線程處理器100適用于影像的解碼處理的情況的概要的圖。圖13是表示宏塊間的解碼處理的依存關(guān)系的圖。
具體實施例方式1.第1實施方式以下,參照附圖對本發(fā)明的第1實施方式進(jìn)行說明。
1. 1 結(jié)構(gòu)圖1是表示第1實施方式的多線程處理器100的結(jié)構(gòu)的框圖。多線程處理器100是同時獨立地執(zhí)行N(N是2以上的整數(shù))個指令流(N個線程) 的處理器,具有指令存儲器101、指令取出控制部102、指令組決定部103、N個指令緩存器 (第1指令緩存器104,第2指令緩存器105,...,第N指令緩存器106)、發(fā)行指令決定部 107、優(yōu)先度決定部108、N個寄存器文件(第1寄存器文件109,第2寄存器文件110,..., 第N寄存器文件111)、運算器組112、回寫總線113、更新控制部114、數(shù)據(jù)存儲器115、讀出檢測部116、指令檢測部117、管理表格存儲部118。這里,各指令緩存器與寄存器文件是1對1對應(yīng),構(gòu)成N個邏輯處理器。(1)指令存儲器101指令存儲器101是保存在多線程處理器中執(zhí)行的指令的存儲器,保持有N條獨立執(zhí)行的指令流(線程)。(2)指令取出控制部102指令取出控制部102保存各線程的程序計數(shù)器(PC),從指令存儲器讀出接下來要執(zhí)行的指令。這里,各線程的程序計數(shù)器設(shè)為在相互不同的值的范圍內(nèi)被計數(shù)。并且,指令取出控制部102從讀出檢測部116接收表示指令可否繼續(xù)取出的Read 訪問信號時,根據(jù)接收的信號的值,繼續(xù)取出指令、以及進(jìn)行對相當(dāng)于例外發(fā)生的特殊處理向量(vector)的分支處理的起動。具體而言,在接收的信號的值是1的情況下,指令取出控制部102停止這之前的指令執(zhí)行序列,起動對相當(dāng)于例外發(fā)生的特殊處理向量的分支處理。在接收到信號的值是0的情況下,繼續(xù)這之前的指令執(zhí)行序列(scequence)。(3)指令組決定部103指令組決定部103從指令存儲器101讀出屬于各指令流(steaming)的指令,進(jìn)行解碼,并寫入分配給該指令的指令緩存器中。(4)第1指令緩存器104 第N指令緩存器106第i指令緩存器(i為1以上N以下的整數(shù))受理并保存屬于第i個指令流(以下,稱為第i指令流)的指令。(5)發(fā)行指令決定部107發(fā)行指令決定部107決定從N個指令緩存器對每個設(shè)備循環(huán)發(fā)行的指令。(6)優(yōu)先度決定部108優(yōu)先度決定部108保存有在發(fā)行指令決定部107決定要發(fā)行的指令時使用的優(yōu)先
度信息表格。這時,發(fā)行指令決定部107使用由優(yōu)先度決定部108保持的優(yōu)先度信息表格,決定按照每個設(shè)備循環(huán)發(fā)行的指令。(7)第1寄存器文件109 第N寄存器文件111第i寄存器文件(i是1以上N以下的整數(shù))是通過執(zhí)行第i指令緩存器中保存的指令流,保存成為讀出及寫入的對象的數(shù)據(jù)的寄存器組。并且,如圖1所示,運算器組112還具有存儲器接口(memory access) 120。這里,存儲器接口 120是用于執(zhí)行對數(shù)據(jù)存儲器進(jìn)行訪問的指令的運算器。(9)回寫總線113
回寫總線113是用于將來自運算器組112的輸出回寫到第1寄存器文件109 第 N寄存器文件111中的總線。(10)數(shù)據(jù)存儲器115數(shù)據(jù)存儲器115通過訪問數(shù)據(jù)存儲器的指令而被訪問,保存有執(zhí)行程序時的數(shù)據(jù)。(11)管理表格存儲部118如圖2(a),圖2(b)所示,管理表格存儲部118存儲有訪問管理表格TlOO及Read 訪問管理表格T150。(11-1)訪問管理表格TlOO如圖2(a)所示,訪問管理表格TlOO具有用于存儲多個如下組的區(qū)域,該組包括 entry_valid200、cbp_id201 及 valid 化 PC202 (有效化 PC202)。entry_valid200表示該組(入口(entry))是否是有效的信息,例如,在對entry_ valid200設(shè)定為值“0”時,該入口是無效的,在設(shè)定為值“1”時,該入口是有效的。dep_id201是用于使該入口和Read訪問管理表格T150內(nèi)的入口之間相關(guān)聯(lián)的信
肩、οRead訪問管理表格T150具有存儲多個如下組的區(qū)域,該組包括entry_Valid210、 cbp_id211、Address (地址)212、valid213、th_id214、th_stride215。entry_valid210表示該組(入口)是否是有效的信息,例如與entry_valid200同樣地,在對entry_valid210設(shè)定為值“0”時,表示該入口是無效的,在設(shè)定為值“1”時,表示該入口是有效的。dep_id211是用于使該入口和訪問管理表格TlOO內(nèi)的入口相關(guān)聯(lián)的信息。這里, dep_id211與d印」d201的值相同的信息彼此是相對應(yīng)的。Address212表示以該入口管理的存儲器區(qū)域的開始地址。valid213表示對于以該入口管理的存儲器區(qū)域已完成基于某一個線程的寫入。th_id214表示對以該入口管理的存儲器區(qū)域完成了寫入的線程的編號。th_Stride215表示對以該入口管理的存儲器區(qū)域完成了寫入的線程和進(jìn)行讀出的線程的距離的值。(12)更新控制部114更新控制部114更新訪問管理表格TlOO及Read訪問管理表格T150。(12-1)關(guān)于訪問管理表格TlOO更新控制部114從軟件受理軟件更新指示后,對訪問管理表格TlOO內(nèi)的字段 (field)進(jìn)行更新。任一個字段都能夠由軟件讀出、寫入。例如,更新控制部114在以N個線程動作的軟件的處理開始前,當(dāng)受理軟件更新指示時,記錄關(guān)于該軟件應(yīng)由訪問管理表格TlOO管理的多個入口。(12-2)關(guān)于Read訪問管理表格T150更新控制部114與訪問管理表格TlOO的更新時同樣,當(dāng)從軟件受理軟件更新指示時,對Read訪問管理表格T150內(nèi)的字段進(jìn)行更新。任一個字段都能夠由軟件讀出、寫入。例如,更新控制部114在以N個線程動作的軟件的處理開始前,當(dāng)受理軟件更新指示時,記錄關(guān)于該軟件應(yīng)由Read訪問管理表格T150管理的多個入口。
7
并且,更新控制部114當(dāng)從指令檢測部117受理指令檢測信息時,對Read訪問管理表格T150內(nèi)的字段進(jìn)行更新。這里,指令檢測信息包括表示檢測初將訪問管理表格 TlOO的更新作為契機(jī)的指令的內(nèi)容的信息(以下,稱為指令檢測信號)、作為更新對象的入口中包含的cbp_id(以下,稱為指令cbp_id)的值、和指令th_id。這里,指令th_id是某一指令被執(zhí)行時由運算器組112輸出的該指令所屬的程序的線程編號。例如,更新控制部114從指令檢測部117受理指令檢測信息時,對于包括與受理的指令檢測信息中含有的指令cbp_id —致的cbp_id的入口,將該入口中含有的valid的值變更為1,進(jìn)而,將該入口的th_id的值變更為受理的指令檢測信息中含有的指令th_id的值。進(jìn)而,當(dāng)在某一線程中對valid的值為“1”的存儲器區(qū)域執(zhí)行讀出指令時,更新控制部114將該valid的值從“1”變更為“0”。(13)指令檢測部117指令檢測部117是在執(zhí)行指令時,基于該指令的程序計數(shù)器的值,檢測是否是由管理表格存儲部118保持的訪問管理表格TlOO所管理的程序計數(shù)器的處理部。S卩,檢測是否向某一存儲器區(qū)域完成了寫入。如圖3所示,指令檢測部117具有表格讀出控制部300,dep_id選擇部301及PC 比較部302。表格讀出控制部300當(dāng)在某一指令被執(zhí)行了時從運算器組112接收指令執(zhí)行信號后,開始訪問管理表格TlOO的入口的讀出的動作。PC比較部302判斷讀出的訪問管理表格TlOO的入口中含有的valid化PC、和執(zhí)行了某一指令時從運算器組112輸出的PC是否一致,將其結(jié)果向cbp_id選擇部301輸出。dep_id選擇部301取得由表格讀出控制部300讀出的entry_Valid的值和cbp_ id的值。并且,cbp_id選擇部301也取得基于PC比較部302的比較結(jié)果。進(jìn)一步地,在執(zhí)行了某一指令時cbp_id選擇部301也從運算器組112接收指令執(zhí)行信號、PC及指令th_id。dep_id選擇部301基于PC比較部302的比較結(jié)果,在所執(zhí)行的指令的PC的值是應(yīng)檢測的指令的情況下,將包含對應(yīng)地接收的指令th_id、取得的dep_id(以下,稱為指令 dep_id)及指令檢測信號的指令檢測信息向更新控制部114輸出。(14)讀出檢測部116在執(zhí)行訪問數(shù)據(jù)存儲器的指令時,讀出檢測部116根據(jù)其訪問對象地址,檢測是否是由管理表格存儲部118保存的Read訪問管理表格T150所管理的存儲器區(qū)域。如圖3所示,讀出檢測部116具有表格讀出控制部400、val id選擇部401、Read地址比較部402、th_id比較部403及加算器404。在存儲器接口 120中對數(shù)據(jù)存儲器115進(jìn)行讀出訪問的Read指令被執(zhí)行時,表格讀出控制部400從存儲器接口 120接收Read執(zhí)行信號后,開始Read訪問管理表格T150的入口的讀出動作。Read地址比較部402對讀出的Read訪問管理表格T150的address的值、和從存儲器接口 120輸出的Read地址進(jìn)行比較,將比較的結(jié)果向valid選擇部401輸出。這里,Read地址是在存儲器接口 120中對數(shù)據(jù)存儲器115進(jìn)行讀出訪問的指令被執(zhí)行時,由存儲器接口 120輸出的進(jìn)行讀出訪問的對象的數(shù)據(jù)存儲器地址。加算器404計算讀出的th_id的值和th_stride的值的和,將計算結(jié)果向th_id 比較部403輸出。th_id比較部403對從存儲器接口 120輸出的Read th_id的值、和從加算器404 接收的值(讀出的th_id的值和th_stride的值的和)進(jìn)行比較,將比較的結(jié)果向valid選擇部401輸出。這里,Read th_id是在存儲器接口 120中對數(shù)據(jù)存儲器115進(jìn)行讀出訪問的指令被執(zhí)行時,由存儲器接口 120輸出的進(jìn)行讀出訪問的指令所屬的線程的線程編號。valid選擇部401從存儲器接口 120接收Read執(zhí)行信號。并且,valid選擇部401取得由表格讀出控制部300讀出的entry_Valid的值、 cbp_id的值及valid的值。進(jìn)而,valid選擇部401分別取得Read地址比較部402的比較結(jié)果、及th_id比較部403的比較結(jié)果。valid選擇部401根據(jù)Read地址比較部402的比較結(jié)果、及th_id比較部403的比較結(jié)果,在Read地址是應(yīng)檢測的信息的情況下,將與其對應(yīng)地取得的valid的值向存儲器接口 120輸出。1.2 動作這里,對多線程處理器100的動作進(jìn)行說明。(1)關(guān)于指令檢測時的動作首先,在某一指令被執(zhí)行時,使用圖4所示的流程圖對由指令檢測部117進(jìn)行的動作進(jìn)行說明。另外,該處理是通過指令檢測部117從運算器組112接收到針對某一指令的指令執(zhí)行信號、PC及指令th_id而開始的處理。當(dāng)某一指令被執(zhí)行時,表格讀出控制部300將用于從訪問管理表格TlOO讀出入口的控制中所用的計數(shù)器η初始化為0 (步驟SQ。這里,計數(shù)器η被保存在表格讀出控制部 300 中。PC比較部302從訪問管理表格TlOO取得第η個入口中包含的valid化PC的值 (步驟S10),判斷所取得的valid化PC的值和從運算器組112接收的PC的值是否相等(步驟 S15)。在PC比較部302判斷為valid化PC的值和從運算器組112取得的PC的值相等的情況下(步驟S15中的“是”),cbp_id選擇部301取得第η個入口中包含的entry_valid 的值(步驟S20)。這里,步驟S15中的判斷結(jié)果為真,是指檢測到連在訪問管理表格TlOO 中管理的PC所表示的指令都已被執(zhí)行,S卩,檢測到完成了向某一存儲器區(qū)域的寫入。dep_id選擇部301判斷取得的entry_Valid的值是否為“1”(步驟S25)。在判斷為是“1”的情況下(步驟S25中的“是”),cbp_id選擇部301從訪問管理表格TlOO取得第η個入口中含有的cbp_id的值(步驟S30)。cbp_id選擇部301將取得的cbp_id的值(指令cbp_id)、與包含已被執(zhí)行的指令的線程相對應(yīng)的th_id (指令th_id)、和指令檢測信號向更新控制部114輸出(步驟S35)。在判斷為cbp_id選擇部301不是“1”的情況下(步驟S25中的“否”),表格讀出控制部300將計數(shù)器η的值加1 (步驟S40)。表格讀出控制部300從入口終端寄存器取得登記在訪問管理表格TlOO中的入口的終端編號(步驟S45)。然后,表格讀出控制部300 判斷計數(shù)器η的值是否與入口的終端編號一致(步驟S50)。在判斷為相等的情況下結(jié)束處理(步驟S50中的“是”),在判斷為不相等的情況下處理返回到步驟SlO (步驟S50中的 “否”)。(2)關(guān)于Read訪問管理表格Τ150的更新的動作這里,當(dāng)連在訪問管理表格TlOO中管理的PC所表示的指令都被執(zhí)行時,使用圖5 所示的流程圖對進(jìn)行的Read訪問管理表格T150的更新的動作進(jìn)行說明。當(dāng)從指令檢測部117接收指令cbp_id、指令th_id及指令檢測信號時,更新控制部 114將用于從Read訪問管理表格T150讀出入口的控制中所用的計數(shù)器m初始化為0 (步驟 S100)。這里,計數(shù)器m保存在更新控制部114中。更新控制部114從Read訪問管理表格T150取得第m個入口中含有的cbp_id的值(步驟S105),并判斷取得的cbp_id的值和從指令檢測部117接收的指令cbp_id的值是否相等(步驟Sl 10)。在判斷為cbp_id的值和指令d印」d的值相等時(步驟SllO中的“是”),更新控制部114將從Read訪問管理表格T150取得的第m個入口中含有的valid的值變更為“ 1”, 并且將th_id的值變更為從指令檢測部117取得的指令th_id的值(步驟S115)。在判斷為cbp_id的值和指令d印」d的值相等的情況下(步驟SllO中的“否”), 更新控制部114將計數(shù)器m的值加1 (步驟S120)。更新控制部114從入口終端寄存器取得登記在Read訪問管理表格T150中的入口的終端編號(步驟S125)。然后,更新控制部114 判斷計數(shù)器m的值與入口的終端編號是否一致(步驟S130)。在判斷為相等的情況下結(jié)束處理(步驟S130中的“是”),在判斷為不相等的情況下處理返回到步驟S105(步驟S130中的“否”)。(3)關(guān)于Read指令檢測時的動作這里,使用圖6所示的流程圖對執(zhí)行Read指令時的動作進(jìn)行說明。另外,該處理是通過讀出檢測部116從存儲器接口 120接收到針對Read指令的Read執(zhí)行信號、Read地址及Read th_id而開始的處理。首先,表格讀出控制部400將用于從Read訪問管理表格T150讀出入口的控制中所用的計數(shù)器P初始化為O (步驟S200)。這里,計數(shù)器P保存在表格讀出控制部400中。Read地址比較部402取得Read訪問管理表格T150的第ρ個入口中含有的 Address的值(步驟S205),判斷取得的Address的值與從存儲器接口 120接收到的Read 地址的值是否一致(步驟S210)。在Read地址比較部402判斷為一致的情況下(步驟S210中的“是”),val. id選擇部401取得Read訪問管理表格T150的第ρ個入口中含有的entry_valid的值(步驟 S215)。valid選擇部401判斷取得的entry_valid的值是否為1 (步驟S220)。在valid選擇部401判斷為entry_Valid的值是1的情況下(步驟S220中的 “是”),加法器404取得Read訪問管理表格T150的第ρ個入口中含有的th_id的值和th_ stride的值,并計算它們的和(步驟S225)。th_id比較部403判斷計算出的和(th_id的值與th_stride的值的和)是否與從存儲器接口 120接收的Read th_id的值一致(步驟S230)。
在判斷為一致的情況下(步驟S230中的“是”),valid選擇部401取得Read訪問管理表格T150的第ρ個入口中含有的valid的值(步驟S235)。這里,比較結(jié)果為真(一致)表示是由th_Stride的值表示的所期望的先行線程完成了寫入的存儲器區(qū)域。valid選擇部401判斷取得的valid的值是否為1 (步驟SM0)。在判斷為valid的值是1的情況下(步驟S240中的“是”),valid選擇部401將值為0的Read訪問信號輸出給指令取出控制部102(步驟S245)。在Read地址比較部402判斷為不一致的情況下(步驟S210中的“否”),及valid 選擇部401判斷為entry_valid的值不是1的情況下(步驟S220中的“否”),表格讀出控制部400將計數(shù)器ρ的值加1(步驟S250)。表格讀出控制部400從入口終端寄存器取得登記到Read訪問管理表格T150中的入口的終端編號(步驟S255)。然后,表格讀出控制部400判斷計數(shù)器ρ的值是否與入口的終端編號一致(步驟S260)。在判斷為相等的情況下,結(jié)束處理(步驟S260中的“是”),在判斷為不相等的情況下,處理返回到步驟S205(步驟S260中的“否”)。在判斷為valid的值不是1的情況下(步驟S240中的“否”),valid選擇部401 將值為1的Read訪問信號向指令取出控制部102輸出(步驟。這里,指令取出控制部102接收Read訪問信號時,在接收的信號的值為1的情況下,停止這之前的指令執(zhí)行序列,啟動向相當(dāng)于例外發(fā)生的特殊處理矢量的分支處理。這是因為,由于連以訪問管理表格TlOO管理的PC的指令都沒有執(zhí)行,即,所期望的基于先行線程的向存儲器區(qū)域的寫入沒有結(jié)束,需要發(fā)生例外而進(jìn)入等待寫入完成的序列。1.3 總結(jié)根據(jù)上述說明,本實施方式表示的多線程處理器100能夠保持例如在執(zhí)行多次寫入指令之后執(zhí)行讀出指定這樣的依存關(guān)系。并且,通過以硬件級別來管理指令執(zhí)行,相比以往的基于信標(biāo)的處理,不需要同步用的代碼,減少通信的總消耗。因此,能夠?qū)崿F(xiàn)一種處理器,其用于管理線程間的依存關(guān)系的軟件處理即使在線程數(shù)變多的情況和依存關(guān)系變復(fù)雜的情況下,也不引起較大的性能劣化的處理器。并且,關(guān)于上述訪問管理表格TlOO及Read訪問管理表格T150的生成的定時,是在通過并行化工具分割應(yīng)執(zhí)行的程序,以能夠并行處理的方式分配給各線程之后。這是由于,通過對各線程進(jìn)行分配,各線程間的依存關(guān)系就變得明確。2.第2實施方式以下,參照附圖對本發(fā)明的第2實施方式圖面以與第1實施方式的不同點為中心進(jìn)行說明。2. 1 結(jié)構(gòu)圖7是表示第2實施方式的多線程處理器1100的結(jié)構(gòu)的框圖。多線程處理器1100是同時獨立地執(zhí)行N(N為2以上的整數(shù))個指令流(N個線程)的處理器,具有指令存儲器1101、指令取出控制部1102、指令組決定部1103、N個指令緩存器(第1指令緩存器1104,第2指令緩存器1105,...,第N指令緩存器1106)、發(fā)行指令決定部1107、優(yōu)先度決定部1108、N個寄存器文件(第1寄存器文件1109,第2寄存器文件1110,...,第N寄存器文件1111)、運算器組1112、回寫總線1113、更新控制部1114、數(shù)據(jù)存儲器1115、讀出檢測部1116、指令檢測部1117、管理表格存儲部1118、地址變換部1130。這里,各指令緩存器和寄存器文件是1對1地對應(yīng),與第1實施方式同樣地,構(gòu)成 N個邏輯處理器。(1)地址變換部1130地址變換部1130使用變換表格T200將從指令取出控制部1102輸入的取出地址 (邏輯地址)變換為另外的地址(物理地址),并向指令存儲器1101輸出的單元。該動作是在為了處理虛擬空間而具有MMU (存儲器管理單元)的處理器上,用于管理虛擬空間的頁面的TLB(頁表緩存器)的動作(例如,參照以下的非專利文獻(xiàn)2)。非專禾Ij 文獻(xiàn) 2 『Modern Processor Design』,McGraw-Hi 11 Series in Electrical and Computer Engineering, p.142-145(ISBN0-07-057064)以下,對本實施方式的地址變換部1130的具體功能進(jìn)行說明。如圖8所示,地址變換部1130具有變換表格T200。變換表格T200具有用于存儲多個如下組(入口 )的區(qū)域,該組包括PC檢查標(biāo)志 (check flag)、標(biāo)志類、邏輯地址及物理地址。這里,在各入口管理有被稱為4KB單位的頁面的存儲器區(qū)域。PC檢查標(biāo)志是表示該入口中包含的頁內(nèi),包含有通知給指令檢測部1117并應(yīng)檢查的PC的可能性的標(biāo)志。具體而言,PC檢查標(biāo)志的值為1的情況下,表示存在包含有應(yīng)檢查的PC的可能性,值為0的情況下,表示不存在包含有應(yīng)檢查的PC的可能性。標(biāo)志類是一般的TLB具有的標(biāo)志類,在本申請中省略詳細(xì)的說明。邏輯地址是一般的TLB具有的邏輯地址字段,在本申請中省略詳細(xì)的說明。物理地址是一般的TLB具有的物理地址字段,在本申請中省略詳細(xì)的說明。地址變換部1130從指令取出控制部1102接收邏輯地址時,使用變換表格T200將該邏輯地址變換為物理地址。在與接收到的邏輯地址對應(yīng)的PC檢查標(biāo)志的值為1的情況下,地址變換部1130 將物理地址和值為1的PC檢查請求向指令存儲器1101輸出。PC檢查標(biāo)志的值為0的情況下,地址變換部1130將物理地址和值為0的PC檢查請求向指令存儲器1101輸出。這里, PC檢查請求是表示是否應(yīng)該對通知給指令檢測部1117而被執(zhí)行的指令的PC進(jìn)行檢查的請求,在PC檢查請求的值為1的情況下,表示應(yīng)檢查,在值為0的情況下,表示不需要檢查。( 指令存儲器1101與第1實施方式同樣地,指令存儲器1101是保存在多線程處理器中執(zhí)行的指令的存儲器,保存有N條獨立執(zhí)行的指令流(線程)。指令存儲器1101從指令取出控制部1102接收值為1的PC檢查請求時,當(dāng)取出由物理地址指定的指令時,對取出的指令附加表示是檢查對象的指令的標(biāo)志信息,并輸出給指令取出控制部1102。在以后的指令解碼、流程、執(zhí)行的動作中,直接以附加了該標(biāo)志狀態(tài)的狀態(tài)而被執(zhí)行。(3)指令取出控制部1102指令取出控制部1102保存各線程的程序計數(shù)器,從指令存儲器讀出接下來執(zhí)行的指令。
12
具體來說,指令取出控制部1102將接下來執(zhí)行的指令的邏輯地址向地址變換部 1130輸出,之后,從指令存儲器1101接收指令。在接收指令時,在是應(yīng)檢查PC的指令的情況下,附加有標(biāo)志狀態(tài)。(4)指令組決定部1103指令組決定部1103與第1實施方式中示出的指令組決定部103同樣,因此這里省略說明。(5)第1指令緩存器1104 第N指令緩存器1106第1指令緩存器1104 第N指令緩存器1106與第1實施方式中示出的各指令緩存器同樣,因此這里省略說明。另外,以下將第i個指令流稱為第i指令流(i為1以上N 以下的整數(shù))。(6)發(fā)行指令決定部1107發(fā)行指令決定部1107與第1實施方式中示出的發(fā)行指令決定部107同樣,因此這里省略說明。(7)優(yōu)先度決定部1108優(yōu)先度決定部1108與第1實施方式中示出的優(yōu)先度決定部108同樣,因此這里省略說明。(8)第1寄存器文件1109 第N寄存器文件1111第1寄存器文件1109 第N寄存器文件1111與第1實施方式中示出的各寄存器文件同樣,因此這里省略說明。運算器組1112與第1實施方式同樣,是含有加法器和乘法器等多個運算器的處理部,也具有存儲器接1120。這里,存儲器接120是用于執(zhí)行訪問數(shù)據(jù)存儲器的指令的運算
ο在執(zhí)行的指令中附加有標(biāo)志狀態(tài)的情況下,運算器組1112通知應(yīng)檢查PC的意思的信息。(10)回寫總線 1113回寫總線1113是與第1實施方式中所示的回寫總線113同樣,因此這里省略說明。(11)數(shù)據(jù)存儲器1115數(shù)據(jù)存儲器1115是與第1實施方式中所示的數(shù)據(jù)存儲器115同樣,因此這里省略說明。(12)管理表格存儲部1118管理表格存儲部1118與第1實施方式同樣,存儲有訪問管理表格及Read訪問管理表格。另外,在以后的說明中如果需要,使用圖2(a)、圖2(b)所示的訪問管理表格TlOO 及Read訪問管理表格T150進(jìn)行說明。(13)更新控制部1114更新控制部1114與第1實施方式的更新控制部114同樣,是更新訪問管理表格 TlOO及Read訪問管理表格T150的單元。另外,關(guān)于更新的詳細(xì)功能,與第1實施方式同樣,因此這里省略說明。(14)指令檢測部1117
13
指令檢測部1117具有與第1實施方式中示出的指令檢測部117同樣的結(jié)構(gòu)要素, 在執(zhí)行指令時,進(jìn)行如下處理基于該指令的程序計數(shù)器的值,檢測是否是由管理表格存儲部1118保存的訪問管理表格TlOO中管理的程序計數(shù)器的處理。與第1實施方式的不同點是,上述處理是在由運算器組1112通知了應(yīng)檢查PC的內(nèi)容的信息時開始的。以下,如果需要,使用第1實施方式表示的結(jié)構(gòu)要素進(jìn)行說明。(15)讀出檢測部1116讀出檢測部1116具有與由第1實施方式表示的讀出檢測部116同樣的結(jié)構(gòu)要素,在執(zhí)行訪問數(shù)據(jù)存儲器的指令時,基于其訪問對象地址,檢測是否是由管理表格存儲部 1118所保存的Read訪問管理表格T150中管理的存儲器區(qū)域。另外,由于具體功能與第1實施方式相同,所以這里省略說明。2. 2 動作這里,對于多線程處理器1100的動作,以與第1實施方式示出的多線程處理器100 的動作的不同點為中心進(jìn)行說明。(1)關(guān)于指令檢測時的動作指令檢測時的動作是與第1實施方式示出的動作(參照圖4)同樣的動作的流程, 但開始的定時不同。本實施方式中,指令檢測部1117在運算器組1112通知了應(yīng)檢查PC的意思的信息時,開始該處理。(2)關(guān)于Read訪問管理表格T150的更新的動作本實施方式的Read訪問管理表格T150的更新的動作與第1實施方式示出的動作 (參照圖5)同樣,因此這里省略說明。(3)關(guān)于Read指令檢測時的動作本實施方式的Read指令檢測時的動作與第1實施方式中示出的動作(參照圖6) 同樣,因此這里省略說明。2. 3 總結(jié)以上,通過使用地址變換部1130,能夠大幅度削減由運算器組1112執(zhí)行并由指令檢測部1117檢查的指令數(shù),削減指令檢測部1117的動作頻度,削減電路的消耗功率。并且,與第1實施方式同樣,由本實施方式示出的多線程處理器100能夠保持例如在多次執(zhí)行寫入指令之后執(zhí)行讀出指令這樣的依存關(guān)系。與第1實施方式同樣,在第2實施方式中,以硬件級別進(jìn)行指令執(zhí)行的管理,相比以往的基于信標(biāo)的處理,不需要同步用的代碼,減少通信的總消耗。因此,能夠?qū)崿F(xiàn)一種處理器,其用于管理線程間的依存關(guān)系的軟件處理在線程數(shù)變多的情況和依存關(guān)系變復(fù)雜的情況下,也不引起大規(guī)模性能劣化。并且,與第1實施方式相同,關(guān)于訪問管理表格TlOO及Read訪問管理表格T150的生成的定時,是在通過并行化工具分割應(yīng)執(zhí)行的程序,并分配給能夠并行處理的各線程之后。進(jìn)而,關(guān)于變換表格T200,也是在通過并行化工具分割應(yīng)執(zhí)行的程序,并分配給能夠并行處理的各線程之后生成的。這是由于通過分配給各線程,在各線程間使用的頁面(page) 等也明確。3.第3實施方式
以下,參照附圖對本發(fā)明的第3實施方式,以與第1及第2實施方式的不同之處為中心進(jìn)行說明。3. 1 結(jié)構(gòu)圖9是表示第3實施方式的多線程處理器2100的結(jié)構(gòu)的框圖。多線程處理器2100是同時獨立地執(zhí)行N(N為2以上的整數(shù))個指令流(N個線程)的處理器,具有指令存儲器2101、指令取出控制部2102、指令組決定部2103、N個指令緩存器(第1指令緩存器2104,第2指令緩存器2105,...,第N指令緩存器2106)、發(fā)行指令決定部2107、優(yōu)先度決定部2108、N個寄存器文件(第1寄存器文件2109,第2寄存器文件2110,...,第N寄存器文件2111)、運算器組2112、回寫總線2113、更新控制部2114、 數(shù)據(jù)存儲器2115、讀出檢測部2116、指令檢測部2117、管理表格存儲部2118、和地址變換部 2130。這里,各指令緩存器與寄存器文件是1對1對應(yīng),與第1及第2實施方式同樣地, 構(gòu)成N個邏輯處理器。(1)指令存儲器2101指令存儲器2101與第1實施方式同樣,是保存在多線程處理器中執(zhí)行的指令的存儲器,保持有N條獨立執(zhí)行的指令流(線程)。(2)指令取出控制部2102指令取出控制部2102與第1實施方式中示出的指令取出控制部102同樣,因此這里省略說明。(3)指令組決定部2103指令組決定部2103與第1實施方式中示出的指令組決定部103同樣,因此這里省略說明。(4)第1指令緩存器2104 第N指令緩存器2106第1指令緩存器2104 第N指令緩存器2106與第1實施方式中示出的各指令緩存器同樣,因此這里省略說明。另外,以下將第i個指令流稱為第i指令流(i為1以上N 以下的整數(shù))。(5)發(fā)行指令決定部2107發(fā)行指令決定部2107與第1實施方式中示出的發(fā)行指令決定部107同樣,因此這里省略說明。(6)優(yōu)先度決定部2108優(yōu)先度決定部2108與第1實施方式中示出的優(yōu)先度決定部108同樣,因此這里省略說明。(7)第1寄存器文件2109 第N寄存器文件2111第1寄存器文件2109 第N寄存器文件2111與第1實施方式中示出的各寄存器文件同樣,因此這里省略說明。(8)地址變換部2130地址變換部2130是將從存儲器接口 2120輸入的訪問地址(邏輯地址)使用變換表格T300變換為其他地址(物理地址)并向數(shù)據(jù)存儲器2115輸出的單元。該動作是為了處理虛擬空間而在具有MMU (存儲器管理單元)的處理器上,管理虛擬空間的頁面的TLB (頁表緩存器)的動作(參照非專利文獻(xiàn)1)。以下,對本實施方式的地址變換部2130的具體功能進(jìn)行說明。如圖10所示,地址變換部2130具有變換表格T300。變換表格T300具有用于存儲多個如下組(入口)的區(qū)域,該組包括=Read檢查標(biāo)志、標(biāo)志類、邏輯地址及物理地址。這里,在各入口中,管理有被稱為4KB單位的頁面的存儲器區(qū)域。 Read檢查標(biāo)志是在該入口中包含的頁面內(nèi)表示如下內(nèi)容的標(biāo)志,該標(biāo)志表示含有通知給讀出檢測部2116并應(yīng)該檢查的Read地址的可能性。具體來說,Read檢查標(biāo)志的值為1時表示具有包含應(yīng)檢查的Read地址的可能性,在值為0時表示沒有包含應(yīng)檢查的Read 地址的可能性。標(biāo)志類是具有一般的TLB的標(biāo)志類,在本專利中省略詳細(xì)說明。邏輯地址是一般的TLB具有的邏輯地址字段,在本申請中省略詳細(xì)說明。邏輯地址是一般的TLB具有的物理地址字段,在本申請中省略詳細(xì)說明。地址變換部2130從存儲器接口 2120接收邏輯地址時,使用變換表格T300將該邏輯地址變換為物理地址。地址變換部2130在接收的邏輯地址所對應(yīng)的Read檢查標(biāo)志的值為1時,將值為 1的Read檢查請求輸出給存儲器接口 2120。Read檢查標(biāo)志的值為0時,地址變換部2130 將值為0的Read檢查請求輸出給存儲器接口 2120。這里,所謂Read檢查請求是表示是否應(yīng)該檢查通知給讀出檢測部2116并被執(zhí)行的Read指令的Read訪問,Read檢查請求的值為1時表示應(yīng)該檢查,值為0時表示不需檢查。運算器組2112與第1實施方式同樣,是含有加法器和乘法器等多個運算器的處理部,還具有存儲器接口 2120。這里,存儲器接口 220是用于執(zhí)行訪問數(shù)據(jù)存儲器的指令的運存儲器接口 2120從地址變換部2130接收到與執(zhí)行的指令相對的Read檢查請求時,通知應(yīng)檢查Read地址的內(nèi)容的信息。(10)回寫總線 2113回寫總線2113與第1實施方式中示出的回寫總線113同樣,因此這里省略說明。(11)數(shù)據(jù)存儲器2115數(shù)據(jù)存儲器2115與第1實施方式中示出的數(shù)據(jù)存儲器115同樣,因此這里省略說明。(12)管理表格存儲部2118管理表格存儲部2118與第1實施方式同樣,存儲有訪問管理表格及Read訪問管理表格。另外,如果在后面的說明中有必要,使用圖2(a),圖2(b)中示出的訪問管理表格 TlOO及Read訪問管理表格T150進(jìn)行說明。(13)更新控制部2114更新控制部2114與第1實施方式的更新控制部114同樣,更新訪問管理表格TlOO 及Read訪問管理表格T150。另外,關(guān)于更新的詳細(xì)功能與第1實施方式同樣,因此這里省略說明。(14)指令檢測部2117
指令檢測部2117具有與第1實施方式中示出的指令檢測部117同樣的結(jié)構(gòu)要素, 在執(zhí)行指令時,基于該指令的程序計數(shù)器的值,進(jìn)行如下的檢測處理,檢測是否是由管理表格存儲部2118所保持的訪問管理表格TlOO中管理的程序計數(shù)器。另外,關(guān)于詳細(xì)的功能,與第1實施方式同樣,因此這里省略詳細(xì)說明。(15)讀出檢測部2116讀出檢測部2116具有與第1實施方式中示出的讀出檢測部116同樣的結(jié)構(gòu)要素,在執(zhí)行訪問數(shù)據(jù)存儲器的指令時,基于其訪問對象地址,檢測是否是由管理表格存儲部 1118所保持的Read訪問管理表格T150中管理的存儲器區(qū)域。與第1及第2實施方式的不同之處是,上述處理是在存儲器接口 2120通知了應(yīng)檢查Read地址的意思的信息時開始的。以下,如果有必要,使用第1實施方式中示出的結(jié)構(gòu)要素進(jìn)行說明。3. 2 動作這里,關(guān)于多線程處理器2100的動作,以與第1實施方式中示出的多線程處理器 100、及第2實施方式中示出的多線程處理器1100的動作不同的點為中心進(jìn)行說明。(1)關(guān)于指令檢測時的動作指令檢測時的動作與第1實施方式中示出的動作(參照圖4)同樣,因此這里省略說明。(2)關(guān)于Read訪問管理表格T150的更新的動作本實施方式的Read訪問管理表格T150的更新的動作,與第1實施方式中示出的動作(參照圖5)同樣,因此這里省略說明。(3)關(guān)于Read指令檢測時的動作本實施方式的Read指令檢測時的動作是與第1實施方式中示出的動作(參照圖 6)同樣的動作的流程,但開始的定時不同。本實施方式中,讀出檢測部2116在存儲器接口 2120通知了應(yīng)檢查Read地址的意思的信息時,該開始處理。另外,詳細(xì)動作的流程與圖4中示出的流程圖相同,因此這里省略說明。3. 3 總結(jié)以上,通過使用地址變換部1130,能夠大幅度削減由運算器組2112執(zhí)行并由讀出檢測部2116檢查的Read指令數(shù),削減讀出檢測部2116的動作頻度,削減電路的消耗功率。并且,與第1實施方式同樣,本實施方式中示出的多線程處理器100能夠保持例如在執(zhí)行多次寫入指令后執(zhí)行讀出指令這樣的依存關(guān)系。與第1實施方式同樣,在第3實施方式中,以硬件級別進(jìn)行指令執(zhí)行的管理,相比以往的基于信標(biāo)的處理,不需要同步用的代碼,減少通信的總消耗。因此,能夠?qū)崿F(xiàn)一種處理器,其用于管理線程間的依存關(guān)系的軟件處理在線程數(shù)變多和依存關(guān)系變復(fù)雜的情況下,也不引起大規(guī)模性能劣化。另外,本實施方式中示出的多線程處理器2100是在第1實施方式中示出的多線程處理器100的結(jié)構(gòu)要素中加入地址變換部2130的結(jié)構(gòu),但本實施方式中示出的多線程處理器2100也可以是在第2實施方式中示出的多線程處理器1100的結(jié)構(gòu)要素中加入地址變換部2130的結(jié)構(gòu)。并且,與第1實施方式同樣地,關(guān)于訪問管理表格TlOO及Read訪問管理表格T150
17的生成的定時,是在通過并行化工具分割應(yīng)執(zhí)行的程序,并分配給能夠并行處理的各線程之后。進(jìn)而,關(guān)于變換表格T300,也通過并行化工具對應(yīng)執(zhí)行的程序進(jìn)行分割,并分配給能夠并行處理的各線程之后生成的。這是由于通過分配給各線程,能夠明確各線程間使用的頁面等。4.第4實施方式以下,參照附圖對本發(fā)明的第4實施方式以與第1實施方式的不同之處為中心進(jìn)行說明。圖11是表示第4實施方式的多核處理器系統(tǒng)3000的硬件結(jié)構(gòu)的框圖。如圖3所示,多核處理器系統(tǒng)3000具有多線程處理器IOOa和100b。多線程處理器IOOa和IOOb都具有與第1實施方式中示出的多線程處理器100同樣的結(jié)構(gòu)。與多線程處理器100的不同之處是,多線程處理器IOOa具有的更新控制部114a、 和多線程處理器IOOb具有的更新控制部114b的功能與第1實施方式的更新控制部114的功能不同。以下,以該點為中心進(jìn)行說明。多線程處理器IOOa具有的管理表格存儲部118a、和多線程處理器IOOb具有的管理表格存儲部118b與第1實施方式中示出的管理表格存儲部118b相同,因此這里省略說明。更新控制部11 更新由該多線程處理器IOOa保存的各表格,并且還進(jìn)行由多線程處理器IOOb保存的各表格的更新。并且,更新控制部114b也同樣,更新由該多線程處理器IOOb保存的各表格,并且還進(jìn)行由多線程處理器IOOa保存的各表格的更新。另外,更新的定時與第1實施方式同樣,因此這里省略詳細(xì)的說明。通過上述方式,能夠抑制處理器間的密切結(jié)合,減小半導(dǎo)體的安裝難易度。另外,本實施方式中示出的多線程處理器3100是改變了第1實施方式中示出的多線程處理器100的更新控制部114后的結(jié)構(gòu),但并不限定于此。本實施方式中示出的多線程處理器3100也可以改變第2實施方式中示出的多線程處理器1100的更新控制部1114 而構(gòu)成,也可以改變第3實施方式中示出的多線程處理器2100的更新控制部2114而構(gòu)成。5.第5實施方式這里,關(guān)于本發(fā)明的第5實施方式,對將第1實施方式中示出的多線程處理器100 適用于面向數(shù)字AV設(shè)備的系統(tǒng)LSI影像的解碼及編碼處理時的動作進(jìn)行說明。首先,對適用于解碼處理的情況進(jìn)行說明。如圖12所示,多線程處理器100是對4個宏塊(MBn,MBn+1, Bn+2, Bn+3)進(jìn)行解碼的單元,將宏塊單位(MBn,MBn+l,Bn+2, Bn+3)的處理通過線程0 線程3進(jìn)行各宏塊的解碼處理。這里,宏塊MBn,MBn+1, Bn+2, Bn+3連續(xù)地配置。例如,為了將使用H. 264等規(guī)格而壓縮的影像信號解碼,需要進(jìn)行比特流的解析、經(jīng)可變長編碼的信號的可變長解碼處理(VLD)、逆量化(IQT)及逆頻率變換、運動補償 (MC)、圖像的重構(gòu)(Recon)、去方塊效應(yīng)濾波處理(DBF)。并且,例如,在宏塊MBn的可變長解碼處理中,將應(yīng)在下一個宏塊MBn+1中參照的數(shù)據(jù)(交接數(shù)據(jù))寫入某個存儲器區(qū)域。如圖13所示,在時間tl完成了該寫入時,多線程處理器100將Read訪問管理表格T150中的與該存儲器區(qū)域?qū)?yīng)的Address相應(yīng)的valid 的值更新為1。這樣,下一個宏塊MBn+1能夠開始對寫入了該存儲器區(qū)域的交接數(shù)據(jù)的讀
出ο并且,在時間t2,t3,t4,t5也同樣,當(dāng)在宏塊MBn中分別完成了解碼的處理(IQT, MC, Recon, DBF)時,即,完成了交接數(shù)據(jù)的寫入時,多線程處理器100將Read訪問管理表格 T150中對應(yīng)的Address所對應(yīng)valid的值更新為1。由此,宏塊MBn+1中,在執(zhí)行解碼的處理(IQT,MC, Recon, DBF)時,能夠開始通過宏塊MBn而被寫入的交接數(shù)據(jù)的讀出。另外,宏塊MBn+1與宏塊MBn+2之間,及宏塊MBn+2與宏塊MBn+3之間的各自的解碼處理的依存關(guān)系也與上述相同,因此這里省略說明。接著,對適用于編碼處理的情況進(jìn)行說明。在宏塊的編碼處理中,通常包含計算對于符號化對象的圖像數(shù)據(jù)的預(yù)測誤差的減法處理、對于預(yù)測誤差進(jìn)行頻率變換及量化的量化處理、對量化DCT系數(shù)及運動矢量進(jìn)行可變長編碼的編碼處理、生成參照圖像的處理、與運動補償相關(guān)的處理。多線程處理器的動作的概念與適用于上述解碼處理的情況相同,在完成了對某個宏塊(例如,MBn)的減法處理,即在完成了交給下一個宏塊MBn+1的數(shù)據(jù)的寫入時,宏塊 MBn+1開始對寫入的交接數(shù)據(jù)的讀出。并且,其他處理的依存關(guān)系也是同樣的。這樣,在按照每個線程執(zhí)行宏塊單位的編碼處理及編碼處理的情況下,通過由程序計數(shù)器管理各線程間的依存關(guān)系,即使在線程數(shù)變多的情況和依存關(guān)系變復(fù)雜的情況下,也能夠?qū)崿F(xiàn)用于管理線程間的依存關(guān)系的軟件處理不引起大規(guī)模性能劣化的面向數(shù)字 AV設(shè)備的系統(tǒng)LSI。6.變形例以上,基于各實施方式進(jìn)行了說明,但本發(fā)明不限定于上述各實施方式。例如,考慮有如下的變形例。(1)在上述第1實施方式中,在Read地址的值和Read訪問管理表格T150的 Address的值的比較中,是使用了全部地址比特進(jìn)行的比較,但并不限定于此。例如,通過從比較對象中除去下位7比特,可以以128比特精度進(jìn)行比較。通過這樣,能夠削減Read訪問管理表格T150的存儲容量。(2)在上述各實施方式中,將訪問管理表格及Read訪問管理表格向管理表格存儲部存儲的定時,也可以是基于用戶操作而產(chǎn)生的。此外,預(yù)先將訪問管理表格及Read訪問管理表格保存到與管理表格存儲部不同的存儲區(qū)域中,通過執(zhí)行用于指定該保存的地址的專用指令,將各表格從上述不同的存儲區(qū)域復(fù)制到管理表格存儲部。(3)上述各實施方式中,向某一存儲器區(qū)域完成寫入的檢測,即線程中含有的特定的位置上存在的指令的檢測是由程序計數(shù)器(PC)控制的,但不限定于此。例如,在作為檢測對象的線程中包含的特定的位置上,可以放置專用指令。并且, 也可以通過在執(zhí)行前在該位置上放置發(fā)生OP例外這樣的代碼而進(jìn)行對應(yīng)的中斷處理例程來進(jìn)行處理。
(4)上述各實施方式中,對讀出指令除了進(jìn)行處理器元件的解碼處理之外,也可以通過對在執(zhí)行前發(fā)生OP例外這樣的讀出指令進(jìn)行代碼改寫等方法錯誤設(shè)陷,而以對應(yīng)的例程來進(jìn)行特別處理。(5)上述各實施方式中,訪問管理表格的入口和Read訪問管理表格的入口處于1 對1的關(guān)系,但不限定于此。也可以是1對多的關(guān)系。該情況下,讀出檢測部在圖6中示出的步驟S230的判斷中判斷為“否”的情況下,通過將處理的移行目的地變更為步驟S250來實現(xiàn)。(6)上述各實施方式中,作為管理對象的存儲器區(qū)域的區(qū)域長度也可以是固定長度,也可以是按照作為管理對象的存儲器區(qū)域而不同的可變長度。(7)上述各實施方式中,在讀出數(shù)據(jù)時參照了地址,但不限定于此。也可以通過PC(程序計數(shù)器)指定來進(jìn)行讀出。例如,在寫入(Write)和讀出 (Read)的依存關(guān)系中,在Write時不能確定PC的情況下,通過在Read側(cè)確定PC (保證已經(jīng)結(jié)束了寫入的指令),能夠保持Write和Read的依存關(guān)系。(8)上述各實施方式中,確定PC來保證寫入已結(jié)束,但不限定于此。參照確定的控制寄存器的內(nèi)容和存儲器的內(nèi)容,判斷寫入是否結(jié)束。(9)上述第5實施方式中,進(jìn)行了連續(xù)配置的宏塊單位的并行處理,即線程的分配,但不限定于此。并行處理也可以是以宏塊線單位來進(jìn)行,也可以是以圖像處理中的IDCT等的處理單位來進(jìn)行。并且,也可以是G0P(Group0fPiCture,圖片組)單位。(10)通過將記述上述實施方式中說明的方法的步驟的程序預(yù)先存儲到存儲器中, CPU(CentralProcessingUnit)等從存儲器讀出程序,并執(zhí)行讀出的程序,由此實現(xiàn)上述方法。并且,將記述了該方法的步驟的程序存儲到記錄介質(zhì)中,并進(jìn)行發(fā)布。(11)也可以組合上述實施方式及變形例。7.補充(1)本發(fā)明的一個實施方式的的處理器執(zhí)行多個線程,其特征在于,該處理器具有設(shè)定單元,在執(zhí)行一個線程中的確保向存儲器區(qū)域完成了寫入的位置上存在的指令時, 對表示是否向該存儲器區(qū)域完成了寫入的利用信息,設(shè)定表示該一個線程向該存儲器區(qū)域完成了寫入之意的內(nèi)容,上述一個線程向上述存儲器區(qū)域進(jìn)行寫入,上述存儲器區(qū)域由上述一個線程與另一線程共同利用;以及控制單元,在上述利用信息表示上述一個線程向上述存儲器區(qū)域完成了寫入的情況下,執(zhí)行另一線程讀出上述存儲器區(qū)域中存在的數(shù)據(jù)的讀出指令,在上述利用信息表示上述一個線程向上述存儲器區(qū)域未完成寫入的情況下,抑制執(zhí)行該讀出指令。根據(jù)該結(jié)構(gòu),處理器通過執(zhí)行一個線程中的確保向存儲器區(qū)域完成了寫入的位置上存在的指令,進(jìn)行另一線程對該存儲器區(qū)域中存在的數(shù)據(jù)的讀出,上述一個線程向上述存儲器區(qū)域進(jìn)行寫入,上述存儲器區(qū)域由上述一個線程與另一線程共同利用。即,處理器在確保在該位置上存在的指令被執(zhí)行之前執(zhí)行著存在的指令的基礎(chǔ)上,能夠進(jìn)行另一線程的該存儲器區(qū)域上存在的數(shù)據(jù)的讀出。由此,處理器能夠確保例如在執(zhí)行多次寫入指令之后執(zhí)行讀出指令這樣的依存關(guān)系。
(2)這里,上述設(shè)定單元具有預(yù)先保存與存在于上述位置上的指令相對應(yīng)的程序計數(shù)器的值的保存區(qū)域,上述設(shè)定單元從外部取得上述程序計數(shù)器的值后,將該值存放到上述保存區(qū)域中,在與由上述一個線程執(zhí)行的指令相對應(yīng)的程序計數(shù)器的值和所保存的值一致的情況下,上述設(shè)定單元對上述利用信息設(shè)定表示上述一個線程向該存儲器區(qū)域完成了寫入之意的內(nèi)容。根據(jù)該結(jié)構(gòu),處理器通過使用程序計數(shù)器,能夠容易確定在一個線程的確保向上述存儲器區(qū)域完成了寫入的位置上存在的指令。(3)這里,在上述保存區(qū)域中還將上述利用信息和表示上述存儲器區(qū)域的存儲器地址相對應(yīng)地保存,上述控制單元從上述另一線程取得上述讀出指令的讀出對象即存儲器區(qū)域的讀出對象地址,在上述讀出對象地址與上述存儲器地址一致的情況下,根據(jù)對應(yīng)的利用信息所示的內(nèi)容執(zhí)行及抑制上述讀出指令。根據(jù)該結(jié)構(gòu),處理器將利用信息與存儲器地址相對應(yīng)地加以保存,能夠容易確定表示讀出對象的存儲器地址所示出的存儲器區(qū)域的利用狀況。(4)這里,上述處理器還具有地址變換單元,該地址變換單元將進(jìn)行數(shù)據(jù)的讀出時取得的虛擬地址變換為物理地址,在變換后的上述物理地址與由上述許可單元預(yù)先保存的上述存儲器地址之間具有關(guān)聯(lián)的情況下,通知應(yīng)確認(rèn)上述存儲器區(qū)域的利用狀況,上述控制單元接收上述通知后,基于上述利用信息判斷與上述存儲器地址對應(yīng)的上述存儲器區(qū)域的利用狀況。根據(jù)該結(jié)構(gòu),處理器通過具有地址變換手段,能夠事先確定控制單元是否有必要判斷上述規(guī)定的存儲器區(qū)域的利用狀況。(5)這里,上述存儲器區(qū)域是也被與上述另一線程不同的線程利用的區(qū)域,上述控制單元還在上述利用信息表示上述一個線程向上述存儲器區(qū)域完成了寫入的情況下,執(zhí)行由上述不同的線程讀出上述存儲器區(qū)域中存在的數(shù)據(jù)的讀出指令,在上述利用信息表示上述一個線程向上述存儲器區(qū)域未完成寫入的情況下,抑制執(zhí)行該讀出指令。根據(jù)該結(jié)構(gòu),處理器即使在執(zhí)行多個指令之后執(zhí)行對由多個線程共同利用的存儲器區(qū)域的讀出指令的情況下,也能夠保持著依存關(guān)系地進(jìn)行執(zhí)行。(6)這里,上述處理器還具有地址變換單元,該地址變換單元將取出指令時取得的虛擬地址變換為物理地址,在變換后的上述物理地址與由上述許可單元預(yù)先保存的上述程序計數(shù)器之間具有關(guān)聯(lián)的情況下,將請求上述許可單元執(zhí)行上述判斷的請求信息通知給上述許可單元,上述許可單元從上述地址變換手段取得上述請求信息后,進(jìn)行上述判斷。根據(jù)該結(jié)構(gòu),處理器通過具有地址變換手段,能夠事先確定是否有必要由許可單元進(jìn)行判斷。(7)這里,上述設(shè)定單元還在對利用信息設(shè)定表示向上述存儲器區(qū)域完成了寫入之意的內(nèi)容時,也對由另一處理器管理的另外的利用信息設(shè)定表示向上述存儲器區(qū)域完成了寫入之意的內(nèi)容。根據(jù)該結(jié)構(gòu),處理器與另一處理器之間,也能夠保持著在多個寫入指令的執(zhí)行后執(zhí)行讀出指令這樣的依存關(guān)系地進(jìn)行處理。(8)這里,上述一個線程及另一線程用于進(jìn)行圖像的解碼處理,進(jìn)行圖像的解碼處理的圖像處理系統(tǒng)具有上述處理器。
根據(jù)該結(jié)構(gòu),處理器能夠保持著在多個寫入指令的執(zhí)行后執(zhí)行讀出指令這樣的依存關(guān)系地進(jìn)行解碼處理。(9)這里,上述一個線程及另一線程用于進(jìn)行圖像的編碼處理,進(jìn)行圖像的編碼處理的圖像處理系統(tǒng)具有上述處理器。根據(jù)該結(jié)構(gòu),處理器能夠保持著在多個寫入指令的執(zhí)行后執(zhí)行讀出指令這樣的依存關(guān)系地進(jìn)行編碼處理。(10)并且,本發(fā)明的一個實施方式的圖像處理裝置,使用多個線程處理圖像,其特征在于,該圖像處理裝置具有設(shè)定單元,在執(zhí)行一個線程中的確保向存儲器區(qū)域完成了寫入的位置上存在的指令時,對表示是否向該存儲器區(qū)域完成了寫入的利用信息,設(shè)定表示該一個線程向該存儲器區(qū)域完成了寫入之意的內(nèi)容,上述一個線程向上述存儲器區(qū)域進(jìn)行寫入,上述存儲器區(qū)域由上述一個線程與另一線程共同利用;以及控制單元,在上述利用信息表示上述一個線程向上述存儲器區(qū)域完成了寫入的情況下,執(zhí)行另一線程讀出上述存儲器區(qū)域中存在的數(shù)據(jù)的讀出指令,在上述利用信息表示上述一個線程向上述存儲器區(qū)域未完成寫入的情況下,抑制執(zhí)行該讀出指令。根據(jù)該結(jié)構(gòu),圖像處理裝置通過執(zhí)行一個線程中的確保向存儲器區(qū)域完成了寫入的位置上存在的指令,進(jìn)行另一線程對該存儲器區(qū)域中存在的數(shù)據(jù)的讀出,上述一個線程向上述存儲器區(qū)域進(jìn)行寫入,上述存儲器區(qū)域由上述一個線程與另一線程共同利用。即,圖像處理裝置在確保在該位置上存在的指令被執(zhí)行之前執(zhí)行著存在的指令的基礎(chǔ)上,能夠進(jìn)行另一線程的該存儲器區(qū)域上存在的數(shù)據(jù)的讀出。由此,圖像處理裝置能夠確保例如在執(zhí)行多次寫入指令之后執(zhí)行讀出指令這樣的依存關(guān)系。(11)這里,上述圖像處理裝置對編碼后的圖像進(jìn)行解碼,將編碼后的一個圖像中連續(xù)配置的宏塊以相互不同的方式分配給上述多個線程,在確保完成了上述寫入的位置上存在的指令是表示完成了如下處理的指令,該處理為可變長解碼處理、逆量化/逆頻率變換的處理、與運動補償相關(guān)的處理、圖像的重構(gòu)處理及去方塊效應(yīng)濾波處理中的某一個處理,在對一個宏塊判斷為完成了上述寫入的情況下,控制單元對處理進(jìn)行控制,以便對位于該一個宏塊的后面的下一個宏塊執(zhí)行與判斷為完成了寫入的處理相同的處理。根據(jù)該結(jié)構(gòu),圖像處理裝置對于連續(xù)配置的宏塊,能夠在保持宏塊間的依存關(guān)系的狀態(tài)下進(jìn)行解碼處理。(12)這里,上述圖像處理裝置對圖像進(jìn)行編碼,在一個圖像中連續(xù)配置的宏塊以相互不同的方式分配給上述多個線程,在確保完成了上述寫入的位置上存在的指令是如下處理,該處理為對編碼對象的圖像數(shù)據(jù)計算預(yù)測誤差的減法處理、對預(yù)測誤差進(jìn)行量化和頻率變換的量化處理、編碼處理、參照圖像的生成處理及與運動補償相關(guān)的處理中的某一個處理,在對一個宏塊判斷為完成了上述寫入的情況下,控制單元對處理進(jìn)行控制,以便對位于該一個宏塊的后面的下一個宏塊執(zhí)行與判斷為完成了寫入的處理相同的處理。根據(jù)該結(jié)構(gòu),圖像處理裝置對于連續(xù)配置的宏塊,能夠在保持宏塊間的依存關(guān)系的狀態(tài)下進(jìn)行編碼處理。工業(yè)實用性本發(fā)明的多線程處理器由于具有實現(xiàn)靈活且高性能的運算處理的功能,能夠適用于DVD錄制和數(shù)字TV等的影像及聲音的媒體處理的多線程處理器等。
22
符號說明100多線程處理器101指令存儲器102指令取出控制部103指令組決定部104第1指令緩存器105第2指令緩存器106第N指令緩存器107發(fā)行指令決定部108優(yōu)先度決定部109第1寄存器文件110第2寄存器文件111第N寄存器文件112運算器組113回寫總線114更新控制部115數(shù)據(jù)存儲器116讀出檢測部117指令檢測部118管理表格存儲部120存儲器接口300表格讀出控制部301cbp_id 選擇部302PC 比較部400表格讀出控制部401cbp_id 選擇部402Read地址比較部403比較部404加算器
權(quán)利要求
1.一種處理器,執(zhí)行多個線程,其特征在于,該處理器具有設(shè)定單元,在執(zhí)行一個線程中的確保向存儲器區(qū)域完成了寫入的位置上存在的指令時,對表示是否向該存儲器區(qū)域完成了寫入的利用信息,設(shè)定表示該一個線程向該存儲器區(qū)域完成了寫入之意的內(nèi)容,上述一個線程向上述存儲器區(qū)域進(jìn)行寫入,上述存儲器區(qū)域由上述一個線程與另一線程共同利用;以及控制單元,在上述利用信息表示上述一個線程向上述存儲器區(qū)域完成了寫入的情況下,執(zhí)行另一線程讀出上述存儲器區(qū)域中存在的數(shù)據(jù)的讀出指令,在上述利用信息表示上述一個線程向上述存儲器區(qū)域未完成寫入的情況下,抑制執(zhí)行該讀出指令。
2.如權(quán)利要求1所述的處理器,其特征在于,上述設(shè)定單元具有預(yù)先保存與存在于上述位置上的指令相對應(yīng)的程序計數(shù)器的值的保存區(qū)域,上述設(shè)定單元從外部取得上述程序計數(shù)器的值后,將該值存放到上述保存區(qū)域中,在與由上述一個線程執(zhí)行的指令相對應(yīng)的程序計數(shù)器的值和所保存的值一致的情況下,上述設(shè)定單元對上述利用信息設(shè)定表示上述一個線程向該存儲器區(qū)域完成了寫入之意的內(nèi)容。
3.如權(quán)利要求2所述的處理器,其特征在于,在上述保存區(qū)域中還將上述利用信息和表示上述存儲器區(qū)域的存儲器地址相對應(yīng)地保存,上述控制單元從上述另一線程取得上述讀出指令的讀出對象即存儲器區(qū)域的讀出對象地址,在上述讀出對象地址與上述存儲器地址一致的情況下,根據(jù)對應(yīng)的利用信息所示的內(nèi)容執(zhí)行及抑制上述讀出指令。
4.如權(quán)利要求3所述的處理器,其特征在于,上述處理器還具有地址變換單元,該地址變換單元將進(jìn)行數(shù)據(jù)的讀出時取得的虛擬地址變換為物理地址,在變換后的上述物理地址與由上述許可單元預(yù)先保存的上述存儲器地址之間具有關(guān)聯(lián)的情況下,通知應(yīng)確認(rèn)上述存儲器區(qū)域的利用狀況,上述控制單元接收上述通知后,基于上述利用信息判斷與上述存儲器地址對應(yīng)的上述存儲器區(qū)域的利用狀況。
5.如權(quán)利要求2所述的處理器,其特征在于,上述存儲器區(qū)域是也被與上述另一線程不同的線程利用的區(qū)域,上述控制單元還在上述利用信息表示上述一個線程向上述存儲器區(qū)域完成了寫入的情況下,執(zhí)行由上述不同的線程讀出上述存儲器區(qū)域中存在的數(shù)據(jù)的讀出指令,在上述利用信息表示上述一個線程向上述存儲器區(qū)域未完成寫入的情況下,抑制執(zhí)行該讀出指令。
6.如權(quán)利要求2所述的處理器,其特征在于,上述處理器還具有地址變換單元,該地址變換單元將取出指令時取得的虛擬地址變換為物理地址,在變換后的上述物理地址與由上述許可單元預(yù)先保存的上述程序計數(shù)器之間具有關(guān)聯(lián)的情況下,將請求上述許可單元執(zhí)行上述判斷的請求信息通知給上述許可單元,上述許可單元從上述地址變換手段取得上述請求信息后,進(jìn)行上述判斷。
7.如權(quán)利要求2所述的處理器,其特征在于,上述設(shè)定單元還在對利用信息設(shè)定表示向上述存儲器區(qū)域完成了寫入之意的內(nèi)容時,也對由另一處理器管理的另外的利用信息設(shè)定表示向上述存儲器區(qū)域完成了寫入之意的內(nèi)容。
8.如權(quán)利要求1所述的處理器,其特征在于,上述一個線程及另一線程用于進(jìn)行圖像的解碼處理,進(jìn)行圖像的解碼處理的圖像處理系統(tǒng)具有上述處理器。
9.如權(quán)利要求1所述的處理器,其特征在于,上述一個線程及另一線程用于進(jìn)行圖像的編碼處理,進(jìn)行圖像的編碼處理的圖像處理系統(tǒng)具有上述處理器。
10.一種控制方法,用在執(zhí)行多個線程的處理器中,其特征在于,具有設(shè)定步驟,在執(zhí)行一個線程中的確保向存儲器區(qū)域完成了寫入的位置上存在的指令時,對表示是否向該存儲器區(qū)域完成了寫入的利用信息,設(shè)定表示該一個線程向該存儲器區(qū)域完成了寫入之意的內(nèi)容,上述一個線程向上述存儲器區(qū)域進(jìn)行寫入,上述存儲器區(qū)域由上述一個線程與另一線程共同利用;以及控制步驟,在上述利用信息表示上述一個線程向上述存儲器區(qū)域完成了寫入的情況下,執(zhí)行另一線程讀出上述存儲器區(qū)域中存在的數(shù)據(jù)的讀出指令,在上述利用信息表示上述一個線程向上述存儲器區(qū)域未完成寫入的情況下,抑制執(zhí)行該讀出指令。
11.一種圖像處理裝置,使用多個線程處理圖像,其特征在于,該圖像處理裝置具有 設(shè)定單元,在執(zhí)行一個線程中的確保向存儲器區(qū)域完成了寫入的位置上存在的指令時,對表示是否向該存儲器區(qū)域完成了寫入的利用信息,設(shè)定表示該一個線程向該存儲器區(qū)域完成了寫入之意的內(nèi)容,上述一個線程向上述存儲器區(qū)域進(jìn)行寫入,上述存儲器區(qū)域由上述一個線程與另一線程共同利用;以及控制單元,在上述利用信息表示上述一個線程向上述存儲器區(qū)域完成了寫入的情況下,執(zhí)行另一線程讀出上述存儲器區(qū)域中存在的數(shù)據(jù)的讀出指令,在上述利用信息表示上述一個線程向上述存儲器區(qū)域未完成寫入的情況下,抑制執(zhí)行該讀出指令。
12.如權(quán)利要求11所述的圖像處理裝置,其特征在于,上述圖像處理裝置對編碼后的圖像進(jìn)行解碼,將編碼后的一個圖像中連續(xù)配置的宏塊以相互不同的方式分配給上述多個線程, 在確保完成了上述寫入的位置上存在的指令是表示完成了如下處理的指令,該處理為可變長解碼處理、逆量化/逆頻率變換的處理、與運動補償相關(guān)的處理、圖像的重構(gòu)處理及去方塊效應(yīng)濾波處理中的某一個處理,在對一個宏塊判斷為完成了上述寫入的情況下,控制單元對處理進(jìn)行控制,以便對位于該一個宏塊的后面的下一個宏塊執(zhí)行與判斷為完成了寫入的處理相同的處理。
13.如權(quán)利要求11所述的圖像處理裝置,其特征在于,上述圖像處理裝置對圖像進(jìn)行編碼,在一個圖像中連續(xù)配置的宏塊以相互不同的方式分配給上述多個線程, 在確保完成了上述寫入的位置上存在的指令是如下處理,該處理為對編碼對象的圖像數(shù)據(jù)計算預(yù)測誤差的減法處理、對預(yù)測誤差進(jìn)行量化和頻率變換的量化處理、編碼處理、參照圖像的生成處理及與運動補償相關(guān)的處理中的某一個處理,在對一個宏塊判斷為完成了上述寫入的情況下,控制單元對處理進(jìn)行控制,以便對位于該一個宏塊的后面的下一個宏塊執(zhí)行與判斷為完成了寫入的處理相同的處理。
全文摘要
提供能夠保持多個指令與一個讀出指令之間的依存關(guān)系的處理器。執(zhí)行多個線程的處理器具有設(shè)定單元,在執(zhí)行一個線程中的確保向存儲器區(qū)域完成了寫入的位置上存在的指令時,對表示是否向該存儲器區(qū)域完成了寫入的利用信息,設(shè)定表示該一個線程向該存儲器區(qū)域完成了寫入之意的內(nèi)容,上述一個線程向上述存儲器區(qū)域進(jìn)行寫入,上述存儲器區(qū)域由上述一個線程與另一線程共同利用;以及控制單元,在上述利用信息表示上述一個線程向上述存儲器區(qū)域完成了寫入的情況下,執(zhí)行另一線程讀出上述存儲器區(qū)域中存在的數(shù)據(jù)的讀出指令,在上述利用信息表示上述一個線程向上述存儲器區(qū)域完成了寫入的情況下,抑制執(zhí)行該讀出指令。
文檔編號G06F9/52GK102483708SQ201180003728
公開日2012年5月30日 申請日期2011年7月6日 優(yōu)先權(quán)日2010年7月7日
發(fā)明者森下廣之 申請人:松下電器產(chǎn)業(yè)株式會社