本技術(shù)實(shí)施例涉及計(jì)算機(jī),特別涉及一種訪存違例預(yù)測裝置、方法、芯片及計(jì)算機(jī)設(shè)備。
背景技術(shù):
1、計(jì)算機(jī)中的處理器的主要功能是對輸入數(shù)據(jù)進(jìn)行存儲和處理,進(jìn)行各種數(shù)學(xué)和邏輯計(jì)算,向用戶提供輸出數(shù)據(jù),從而使計(jì)算機(jī)進(jìn)行工作。在現(xiàn)代處理器中,存在具有相關(guān)性的訪問(load)-存儲(store)指令,并且對于具有相關(guān)性的存儲-訪問指令必須嚴(yán)格的按照存儲指令、訪問指令的順序進(jìn)行處理,否則會(huì)出現(xiàn)語義錯(cuò)誤。
2、相關(guān)技術(shù)中,load指令以及store指令被譯碼后通常被派遣到相應(yīng)運(yùn)算單元的等待隊(duì)列中,并在等待隊(duì)列中等待發(fā)射到運(yùn)算單元。在此過程中,通常按照完全存儲順序模型,在發(fā)射load指令之前,需要先檢測與該load指令具有依賴關(guān)系的store指令是否被成功發(fā)射,在檢測到store指令被發(fā)射的情況下,確定load指令可被發(fā)射。
3、然而,按照完全存儲順序模型進(jìn)行指令發(fā)射時(shí),在檢測store指令是否發(fā)射的過程中,通常需要等待該load指令的全部前序store指令均計(jì)算完畢后才能進(jìn)行檢測,導(dǎo)致檢測耗時(shí)較多,從而導(dǎo)致load指令發(fā)射延遲較大。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)實(shí)施例提供了一種訪存違例預(yù)測裝置、方法、芯片及計(jì)算機(jī)設(shè)備,通過構(gòu)建待發(fā)射計(jì)數(shù)表的方式以控制訪問指令的發(fā)射,增加了訪存違例預(yù)測的準(zhǔn)確性。所述技術(shù)方案包括如下方面。
2、一方面,本技術(shù)實(shí)施例提供了一種訪存違例預(yù)測裝置,所述裝置包括:
3、第一寄存器組、第二寄存器組、讀寫控制器、第一多路選擇器以及訪問指令發(fā)射隊(duì)列;
4、所述第一寄存器組,用于存儲訪存違例表,所述訪存違例表用于指示歷史存儲指令以及歷史訪問指令的訪存違例信息以及計(jì)數(shù)索引,所述訪存違例信息用于表征所述歷史存儲指令和所述歷史訪問指令的訪存違例情況,所述計(jì)數(shù)索引是訪問指令對應(yīng)的待發(fā)射計(jì)數(shù)值在所述第二寄存器組中所處條目的索引,所述待發(fā)射計(jì)數(shù)值用于表征與所述訪問指令具有訪存依賴關(guān)系的待發(fā)射存儲指令的數(shù)量;
5、所述第二寄存器組,用于存儲待發(fā)射計(jì)數(shù)表,所述待發(fā)射計(jì)數(shù)表用于表征不同訪問指令對應(yīng)的所述待發(fā)射計(jì)數(shù)值;
6、所述讀寫控制器,用于在接收到所述訪問指令的情況下,基于所述訪問指令的第一訪問指令存儲地址,查詢所述第一寄存器組中的所述訪存違例表,并在所述訪問指令對應(yīng)的所述訪存違例信息指示所述訪問指令產(chǎn)生過訪存違例的情況下,控制所述第一寄存器組將所述訪問指令對應(yīng)的第一計(jì)數(shù)索引傳輸至所述第一多路選擇器的所述選擇輸入端;
7、所述第一多路選擇器,用于基于接收到的所述訪問指令對應(yīng)的所述第一計(jì)數(shù)索引,從所述待發(fā)射計(jì)數(shù)表中選擇所述訪問指令對應(yīng)的第一待發(fā)射計(jì)數(shù)值;
8、所述訪問指令發(fā)射隊(duì)列,用于在接收到所述訪問指令的情況下,保存所述訪問指令,以及基于所述訪問指令對應(yīng)的所述第一待發(fā)射計(jì)數(shù)值,控制發(fā)射所述訪問指令。
9、另一方面,本技術(shù)實(shí)施例提供了一種訪存違例預(yù)測方法,所述方法用于如上述方面所述的訪存違例預(yù)測裝置,所述方法包括:
10、讀寫控制器在接收到所述訪問指令的情況下,基于訪問指令的第一訪問指令存儲地址,查詢第一寄存器組中的訪存違例表,并在所述訪問指令對應(yīng)的訪存違例信息指示所述訪問指令產(chǎn)生過訪存違例的情況下,控制所述第一寄存器組將所述訪問指令對應(yīng)的第一計(jì)數(shù)索引傳輸至第一多路選擇器的選擇輸入端;
11、第一多路選擇器基于接收到的所述訪問指令對應(yīng)的所述第一計(jì)數(shù)索引,從所述待發(fā)射計(jì)數(shù)表中選擇所述訪問指令對應(yīng)的第一待發(fā)射計(jì)數(shù)值;
12、訪問指令發(fā)射隊(duì)列在接收到所述訪問指令的情況下,保存所述訪問指令,以及基于所述訪問指令對應(yīng)的所述第一待發(fā)射計(jì)數(shù)值,控制發(fā)射所述訪問指令。
13、在一些實(shí)施例中,訪問指令發(fā)射隊(duì)列包括第三寄存器組、第一數(shù)值比較器以及發(fā)射控制器,在訪問指令發(fā)射隊(duì)列控制發(fā)射訪問指令時(shí),第三寄存器組存儲待發(fā)射的訪問指令對應(yīng)的第一待發(fā)射計(jì)數(shù)值;第一數(shù)值比較器將第一待發(fā)射計(jì)數(shù)值與0進(jìn)行比較,得到第一比較結(jié)果;發(fā)射控制器在第一比較結(jié)果指示第一待發(fā)射計(jì)數(shù)值為0的情況下,發(fā)射訪問指令,或者,在第一比較結(jié)果指示第一待發(fā)射計(jì)數(shù)值不為0的情況下,控制訪問指令等待發(fā)射。
14、在一些實(shí)施例中,訪問指令發(fā)射隊(duì)列還包括第四寄存器組、第二數(shù)值比較器以及第一減法器,在訪問指令發(fā)射隊(duì)列控制發(fā)射訪問指令時(shí),第四寄存器組存儲第一多路選擇器傳輸?shù)脑L問指令對應(yīng)的第一計(jì)數(shù)索引;存儲指令發(fā)射隊(duì)列在發(fā)射存儲指令的情況下,將存儲指令對應(yīng)的第二計(jì)數(shù)索引傳輸至第二數(shù)值比較器的選擇輸入端;第二數(shù)值比較器對接收到的第二計(jì)數(shù)索引與第一計(jì)數(shù)索引進(jìn)行比較,得到第二比較結(jié)果;第一減法器在第二比較結(jié)果指示第二計(jì)數(shù)索引與第一計(jì)數(shù)索引相同的情況下,基于第二計(jì)數(shù)索引從第三寄存器組中讀取訪問指令對應(yīng)的第一待發(fā)射計(jì)數(shù)值;第一減法器將讀取到的第一待發(fā)射計(jì)數(shù)值進(jìn)行減一操作,得到減法結(jié)果,并將減法結(jié)果填充至第三寄存器組中述第二計(jì)數(shù)索引對應(yīng)的條目。
15、在一些實(shí)施例中,讀寫控制器包括第一哈希單元以及查詢單元,在讀寫控制器查詢第一寄存器組中的訪存違例表時(shí),第一哈希單元基于訪問指令的第一訪問指令存儲地址,確定訪問指令對應(yīng)的第一訪存違例表索引,第一訪存違例表索引用于表征訪問指令對應(yīng)的訪存違例信息在訪存違例表中所處條目的索引;查詢單元基于第一訪存違例表索引,查詢訪存違例表,獲取訪問指令對應(yīng)的訪存違例信息以及第一計(jì)數(shù)索引。
16、在一些實(shí)施例中,方法還包括:存儲指令發(fā)射隊(duì)列控制發(fā)射存儲指令,并將存儲指令對應(yīng)的第三計(jì)數(shù)索引傳輸至第二多路選擇器的選擇輸入端;第二多路選擇器基于第三計(jì)數(shù)索引,從待發(fā)射計(jì)數(shù)表中選擇存儲指令對應(yīng)的第二待發(fā)射計(jì)數(shù)值;第二減法器對輸入的第二待發(fā)射計(jì)數(shù)值進(jìn)行減一操作,并將減法結(jié)果填充至第二寄存器組中第三計(jì)數(shù)索引對應(yīng)的條目。
17、在一些實(shí)施例中,讀寫控制器包括第二哈希單元以及查詢單元,方法還包括:第二哈希單元基于存儲指令的存儲指令存儲地址,確定存儲指令對應(yīng)的第二訪存違例表索引,第二訪存違例表索引用于表征存儲指令對應(yīng)的訪存違例信息在訪存違例表中所處條目的索引;查詢單元基于第二訪存違例表索引,查詢訪存違例表,獲取存儲指令對應(yīng)的訪存違例信息以及第三計(jì)數(shù)索引。
18、在一些實(shí)施例中,方法還包括:第三多路選擇器基于接收到的第三計(jì)數(shù)索引,從待發(fā)射計(jì)數(shù)表中選擇存儲指令對應(yīng)的第三待發(fā)射計(jì)數(shù)值,并將第三待發(fā)射計(jì)數(shù)值傳輸至加法器,第三計(jì)數(shù)索引由第一寄存器組傳輸至第三多路選擇器;加法器對輸入的第三待發(fā)射計(jì)數(shù)值進(jìn)行加一操作,得到加法結(jié)果,并將加法結(jié)果填充至第二寄存器組中第三計(jì)數(shù)索引對應(yīng)的條目。
19、在一些實(shí)施例中,方法還包括:訪存依賴記錄器基于產(chǎn)生過訪存違例的歷史存儲指令以及歷史訪問指令的指令存儲地址,以及第二寄存器組的條目占用情況,填充訪存違例表。
20、在一些實(shí)施例中,訪存依賴記錄器包括第三哈希單元以及存儲控制單元,在訪存依賴記錄器填充訪存違例表時(shí),第三哈希單元對歷史訪問指令對應(yīng)第二訪問指令存儲地址進(jìn)行哈希運(yùn)算,得到歷史訪問指令對應(yīng)的第三訪存違例表索引;第三哈希單元對歷史存儲指令對應(yīng)第二存儲指令存儲地址進(jìn)行哈希運(yùn)算,得到歷史存儲指令對應(yīng)的第四訪存違例表索引;存儲控制單元向訪存違例表中第三訪存違例表索引對應(yīng)的條目填充歷史訪問指令對應(yīng)的訪存違例信息以及目標(biāo)計(jì)數(shù)索引;存儲控制單元向訪存違例表中第四訪存違例表索引對應(yīng)的條目填充歷史存儲指令對應(yīng)的訪存違例信息以及目標(biāo)計(jì)數(shù)索引。
21、在一些實(shí)施例中,存儲控制單元包括偽最近最少使用單元以及分配單元,在訪存依賴記錄器填充訪存違例表時(shí),偽最近最少使用單元訪問第一寄存器組,并基于訪存違例表中的計(jì)數(shù)索引,確定第二寄存器組中各條目的占用情況;偽最近最少使用單元基于第二寄存器組中各條目的占用情況,為歷史訪問指令以及歷史存儲指令從第二寄存器組中選擇目標(biāo)條目,并將目標(biāo)條目的目標(biāo)計(jì)數(shù)索引傳輸至分配單元;分配單元向第一寄存器組中第四訪存違例表索引以及第三訪存違例表索引對應(yīng)的條目填充訪存違例信息以及目標(biāo)計(jì)數(shù)索引;分配單元第一寄存器組中第三訪存違例表索引對應(yīng)的條目填充訪存違例信息以及目標(biāo)計(jì)數(shù)索引。
22、另一方面,本技術(shù)實(shí)施例提供了一種芯片,所述芯片包括如上述方面所述的訪存違例預(yù)測裝置。
23、另一方面,本技術(shù)實(shí)施例提供了一種計(jì)算機(jī)設(shè)備,所述計(jì)算機(jī)設(shè)備包括處理器以及存儲器,所述處理器與所述存儲器通過總線相連,所述處理器中設(shè)置有如上述方面所述的訪存違例預(yù)測裝置。
24、本技術(shù)實(shí)施例中,在存在待發(fā)射的訪問指令的情況下,基于訪問指令的訪問指令存儲地址,查詢訪存違例表,從而確定該訪問指令是否產(chǎn)生過訪存違例。在確定訪問指令產(chǎn)生過訪存違例的情況下,再基于訪存違例表中存儲的該訪問指令對應(yīng)的計(jì)數(shù)索引,查詢待發(fā)射計(jì)數(shù)表,從而確定該訪問指令對應(yīng)的待發(fā)射計(jì)數(shù)值,以便訪問指令發(fā)射隊(duì)列控制發(fā)射訪問指令。待發(fā)射計(jì)數(shù)表中存儲的計(jì)數(shù)值表征與該訪問指令具有訪存依賴關(guān)系的待發(fā)射存儲指令的數(shù)量,從而使訪問指令發(fā)射隊(duì)列能夠根據(jù)待發(fā)射計(jì)數(shù)表中的計(jì)數(shù)值準(zhǔn)確判斷訪問指令是否滿足發(fā)射條件,避免產(chǎn)生訪存違例。此外,本技術(shù)實(shí)施例所示出的裝置僅根據(jù)訪存指令的訪問指令存儲地址查詢訪存違例表,不需要根據(jù)訪問指令與存儲指令所指示的數(shù)據(jù)存儲地址判斷訪問指令與存儲指令之間是否存在訪存依賴關(guān)系,不需要等待所有前序存儲指令均計(jì)算完畢再進(jìn)行檢測,降低訪問指令的發(fā)射延時(shí)。