一種指令執(zhí)行方法以及順序處理器的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及指令處理領(lǐng)域,尤其涉及一種指令執(zhí)行方法W及順序處理器。
【背景技術(shù)】
[0002] 目前的商業(yè)處理器CPU根據(jù)指令調(diào)度方法的不同一般分為兩大類;順序執(zhí)行和亂 序執(zhí)行。
[0003] 在順序執(zhí)行的處理器中,一條流水線在一個(gè)執(zhí)行周期中有固定的可執(zhí)行拍數(shù),每 個(gè)指令有一定的執(zhí)行拍數(shù),為了使指令順序提交,處理器設(shè)計(jì)人員通常在設(shè)計(jì)時(shí),會(huì)為執(zhí)行 拍數(shù)較少的指令在其對應(yīng)流水線中增加空拍(delaystage),從而使得送些執(zhí)行拍數(shù)少的 指令與執(zhí)行拍數(shù)長的指令的流水線有相同的級數(shù),達(dá)到順序提交的目的。
[0004] 但是,在流水線中增加空拍,一條流水線在一個(gè)執(zhí)行周期中只有執(zhí)行指令的拍數(shù) 被有效利用了,而增加的空拍在處理器執(zhí)行時(shí)會(huì)被浪費(fèi)掉,此時(shí)處理器沒有對有效的指令 進(jìn)行處理而空閑下來,送樣便降低了處理器的性能。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明實(shí)施例提供了一種指令執(zhí)行方法W及順序處理器,用于在順序處理器中組 合指令,減少空拍,更大程度的發(fā)揮處理器性能。
[0006] 本發(fā)明實(shí)施例第一方面提供了一種指令執(zhí)行方法,包括:
[0007] 當(dāng)順序處理器的一條流水線內(nèi)有預(yù)置數(shù)目個(gè)串行在一起的功能單元時(shí),所述順序 處理器確定所述預(yù)置數(shù)目為每個(gè)指令組合的最大執(zhí)行拍數(shù);
[0008] 所述順序處理器按照指令順序依次將多條指令融合成指令組合,其中,所述多條 指令的執(zhí)行拍數(shù)之和不大于所述最大執(zhí)行拍數(shù);
[0009] 所述順序處理器依次發(fā)射融合出的各指令組合,順序執(zhí)行所述各指令組合中的指 令。
[0010] 結(jié)合本發(fā)明實(shí)施例的第一方面,本發(fā)明實(shí)施例第一方面的第一種實(shí)現(xiàn)方式中,所 述順序處理器按照指令順序依次將多條指令融合成指令組合,其中,所述多條指令的執(zhí)行 拍數(shù)之和不大于所述最大執(zhí)行拍數(shù)具體包括:
[0011] 所述順序處理器依次讀取所述指令順序中下一條指令作為待融合指令,對所述待 融合指令執(zhí)行如下操作:
[0012] 所述順序處理器判斷所述待融合指令的執(zhí)行拍數(shù)是否不大于當(dāng)前指令組合的剩 余拍數(shù),所述當(dāng)前指令組合為當(dāng)前正在融合指令的指令組合,所述剩余拍數(shù)為所述最大執(zhí) 行拍數(shù)與組合拍數(shù)的差值,所述組合拍數(shù)為加入所述當(dāng)前指令組合中所有指令的執(zhí)行拍數(shù) 之和;
[0013] 若大于所述剩余拍數(shù),則更新所述當(dāng)前指令組合并觸發(fā)所述順序處理器判斷所述 待融合指令的執(zhí)行拍數(shù)是否不大于當(dāng)前指令組合的剩余拍數(shù)的步驟;其中,更新當(dāng)前指令 組合包括結(jié)束并保存當(dāng)前指令組合,新建下一個(gè)指令組合作為更新后的當(dāng)前指令組合;
[0014] 若不大于所述剩余拍數(shù),則將所述待融合指令加入所述當(dāng)前指令組合,觸發(fā)所述 順序處理器依次讀取所述指令順序中下一條指令作為待融合指令的步驟。
[0015] 結(jié)合本發(fā)明實(shí)施例第一方面的第一種實(shí)現(xiàn)方式,本發(fā)明實(shí)施例第一方面的第二種 實(shí)現(xiàn)方式中,所述若大于所述剩余拍數(shù),則更新所述當(dāng)前指令組合并觸發(fā)所述順序處理器 判斷所述待融合指令的執(zhí)行拍數(shù)是否不大于當(dāng)前指令組合的剩余拍數(shù)具體包括:
[0016] 若大于所述剩余拍數(shù),則更新所述當(dāng)前指令組合,判斷所述待融合指令的執(zhí)行拍 數(shù)是否大于所述最大執(zhí)行拍數(shù);
[0017] 若大于所述最大執(zhí)行拍數(shù),則將所述待融合指令單獨(dú)加入更新后的當(dāng)前指令組 合,再次更新所述更新后的當(dāng)前指令組合,觸發(fā)所述順序處理器依次讀取所述指令順序中 下一條指令作為待融合指令的步驟;
[0018] 若不大于所述最大執(zhí)行拍數(shù),則觸發(fā)所述順序處理器判斷所述待融合指令的執(zhí)行 拍數(shù)是否不大于當(dāng)前指令組合的剩余拍數(shù)的步驟。
[0019] 結(jié)合本發(fā)明實(shí)施例第一方面的第一種實(shí)現(xiàn)方式或第二種實(shí)現(xiàn)方式,本發(fā)明實(shí)施例 第一方面的第Η種實(shí)現(xiàn)方式中,若不大于所述剩余拍數(shù),則將所述待融合指令加入所述當(dāng) 前指令組合,觸發(fā)所述順序處理器依次讀取所述指令順序中下一條指令作為待融合指令的 步驟具體包括:
[0020] 若不大于所述剩余拍數(shù),則判斷所述待融合指令是否為第一特殊指令或第二特殊 指令,所述第一特殊指令為必須單獨(dú)成組的指令,所述第二特殊指令為不須單獨(dú)成組但必 須放在一個(gè)指令組合的最后一條的指令;
[0021] 若所述待融合指令為第一特殊指令,則更新所述當(dāng)前指令組合,將所述待融合指 令單獨(dú)加入更新后的當(dāng)前指令組合,再次更新所述更新后的當(dāng)前指令組合,觸發(fā)所述順序 處理器依次讀取所述指令順序中下一條指令作為待融合指令的步驟;
[0022] 若所述待融合指令為第二特殊指令,則將所述待融合指令加入所述當(dāng)前指令組合 再更新所述當(dāng)前指令組合,觸發(fā)所述順序處理器依次讀取所述指令順序中下一條指令作為 待融合指令的步驟;
[0023] 若所述待融合指令不為第一特殊指令且不為第二特殊指令,則將所述待融合指令 加入所述當(dāng)前指令組合后直接觸發(fā)所述順序處理器依次讀取所述指令順序中下一條指令 作為待融合指令的步驟。
[0024] 結(jié)合本發(fā)明實(shí)施例第一方面的第Η種實(shí)現(xiàn)方式,本發(fā)明實(shí)施例第一方面的第四種 實(shí)現(xiàn)方式中,所述方法還包括:
[00巧]當(dāng)所述順序處理器準(zhǔn)備好的指令都加入了指令組合時(shí),所述順序處理器更新所述 當(dāng)前指令組合。
[0026] 本發(fā)明實(shí)施例第二方面提供了一種順序處理器,包括:
[0027] 確定模塊,用于當(dāng)順序處理器的一條流水線內(nèi)有預(yù)置數(shù)目個(gè)串行在一起的功能單 元時(shí),確定所述預(yù)置數(shù)目為每個(gè)指令組合的最大執(zhí)行拍數(shù);
[0028] 融合模塊,用于按照指令順序依次將多條指令融合成指令組合,其中,所述多條指 令的執(zhí)行拍數(shù)之和不大于所述確定模塊確定的最大執(zhí)行拍數(shù);
[0029] 執(zhí)行模塊,用于依次發(fā)射所述融合模塊融合出的各指令組合,順序執(zhí)行所述各指 令組合中的指令。
[0030] 結(jié)合本發(fā)明實(shí)施例的第二方面,本發(fā)明實(shí)施例第二方面的第一種實(shí)現(xiàn)方式中,所 述融合模塊具體包括:
[0031] 讀取觸發(fā)單元,用于依次讀取所述指令順序中下一條指令作為待融合指令,對所 述待融合指令觸發(fā)拍數(shù)判斷單元;
[0032] 拍數(shù)判斷單元,用于判斷所述讀取觸發(fā)單元讀取的待融合指令的執(zhí)行拍數(shù)是否不 大于當(dāng)前指令組合的剩余拍數(shù),所述當(dāng)前指令組合為當(dāng)前正在融合指令的指令組合,所述 剩余拍數(shù)為所述最大執(zhí)行拍數(shù)與組合拍數(shù)的差值,所述組合拍數(shù)為加入所述當(dāng)前指令組合 中所有指令的執(zhí)行拍數(shù)之和;
[0033] 組合更新單元,用于當(dāng)所述拍數(shù)判斷單元判斷出所述待融合指令的執(zhí)行拍數(shù)大于 當(dāng)前指令組合的剩余拍數(shù)時(shí),更新所述當(dāng)前指令組合并觸發(fā)所述拍數(shù)判斷單元;其中,更新 當(dāng)前指令組合包括結(jié)束并保存當(dāng)前指令組合,新建下一個(gè)指令組合作為更新后的當(dāng)前指令 組合;
[0034] 指令更新單元,用于當(dāng)所述拍數(shù)判斷單元判斷出所述待融合指令的執(zhí)行拍數(shù)不大 于當(dāng)前指令組合的剩余拍數(shù)時(shí),將所述待融合指令加入所述當(dāng)前指令組合,觸發(fā)所述讀取 觸發(fā)單元。
[0035] 結(jié)合本發(fā)明實(shí)施例第二方面的第一種實(shí)現(xiàn)方式,本發(fā)明實(shí)施例第二方面的第二種 實(shí)現(xiàn)方式中,所述組合更新單元具體包括:
[0036] 拍數(shù)判斷子單元,用于當(dāng)所述拍數(shù)判斷單元判斷出所述待融合指令的執(zhí)行拍數(shù)大 于當(dāng)前指令組合的剩余拍數(shù)時(shí),更新所述當(dāng)前指令組合,判斷所述待融合指令的執(zhí)行拍數(shù) 是否大于所述最大執(zhí)行拍數(shù);
[0037] 第一單獨(dú)組合子單元,用于當(dāng)所述拍數(shù)判斷子單元判斷出所述待融合指令的執(zhí)行 拍數(shù)大于所述最大執(zhí)行拍數(shù)時(shí),將所述待融合指令單獨(dú)加入更新后的當(dāng)前指令組合,再次 更新所述更新后的當(dāng)前指令組合,觸發(fā)所述讀取觸發(fā)單元;
[0038] 否定觸發(fā)子單元,用于當(dāng)所述拍數(shù)判斷子單元判斷出所述待融合指令的執(zhí)行拍數(shù) 不大于所述最大執(zhí)行拍數(shù)時(shí),觸發(fā)所述拍數(shù)判斷單元。
[0039] 結(jié)合本發(fā)明實(shí)施例第二方面的第一種實(shí)現(xiàn)方式或第二種實(shí)現(xiàn)方式,本發(fā)明實(shí)施例 第二方面的第Η種實(shí)現(xiàn)方式中,所述指令更新單元具體包括:
[0040] 指令判斷子單元,用于當(dāng)所述拍數(shù)判斷單元判斷出所述待融合指令的執(zhí)行拍數(shù)不 大于當(dāng)前指令組合的剩余拍數(shù)時(shí),判斷所述待融合指令是否為第一特殊指令或第二特殊指 令,所述第一特殊指令為必須單獨(dú)成組的指令,所述第二特殊指令為不須單獨(dú)成組但必須 放在一個(gè)指令組合的最后一條的指令;
[0041] 第二單獨(dú)組合子單元,用于當(dāng)所述指令判斷子單元判斷出所述待融合指令為第一 特殊指令時(shí),更新所述當(dāng)前指令組合,將所述待融合指令單獨(dú)加入更新后的當(dāng)前指令組合, 再次更新所述更新后的當(dāng)前指令組合,觸發(fā)所述讀取觸發(fā)單元;
[0042] 加入更新子單元,用于當(dāng)所述指令判斷子單元判斷出所述待融合指令為第二特殊 指令時(shí),將所述待融合指令加入所述當(dāng)前指令組合再更新所述當(dāng)前指令組合,觸發(fā)所述讀 取觸發(fā)單元;
[0043] 加入觸發(fā)子單元,用于當(dāng)所述指令判斷子單元判斷出所述待融合指令不為第一特 殊指令且不為第二特殊指令時(shí),將所述待融合指令加入所述當(dāng)前指令組合后直接觸發(fā)所述 讀取觸發(fā)單元。
[0044] 結(jié)合本發(fā)明實(shí)施例中第二方面的第Η種實(shí)現(xiàn)方式,本發(fā)明實(shí)施例第二方面的第四 種實(shí)現(xiàn)方式中,所述順序處理器還包括:
[0045] 完成更新模塊,用于當(dāng)所述順序處理器準(zhǔn)備好的指令都加入了指令組合時(shí),更新 所述當(dāng)前指令組合。
[0046] 從W上技術(shù)方案可W看出,本發(fā)明實(shí)施例具有W下優(yōu)點(diǎn):本發(fā)明實(shí)施例中,順序處 理器按照指令順序依次將多條指令融合成指令組合,其中,所述多條指令的執(zhí)行拍數(shù)之和 不大于所述最大執(zhí)行拍數(shù),再依次發(fā)射融合出的各指令組合,順序執(zhí)行各指令組合中的指 令,送樣將多條指令融合成一個(gè)個(gè)指令組合發(fā)射執(zhí)行,在一條流水線的一個(gè)執(zhí)行周期中可 W同時(shí)執(zhí)行多條指令,增加了一個(gè)執(zhí)行周期中需要執(zhí)行的有效的指令的拍數(shù),減少了需要 填充的空拍,增加了單位時(shí)間內(nèi)處理器對有效的指令進(jìn)行處理的時(shí)間,減少了單位時(shí)間內(nèi) 處理器的空閑等待時(shí)間,更大程度的發(fā)揮了處理器的性能。
【附圖說明】
[0047] 圖1為本發(fā)明實(shí)施例中指令執(zhí)行方法一個(gè)流程示意圖;
[0048] 圖2為本發(fā)明實(shí)施例中指令執(zhí)行方法另一個(gè)流程示意圖;
[0049] 圖3為本發(fā)明實(shí)施例中指令執(zhí)行方法另一個(gè)流程示意圖;
[0050] 圖4為本發(fā)明實(shí)施例中指令執(zhí)行方法另一個(gè)流程示意圖;
[0051] 圖5為本發(fā)明實(shí)施例中順序處理器一個(gè)結(jié)構(gòu)示意圖;
[0052] 圖6為本發(fā)明實(shí)施例中順序處理器另一個(gè)結(jié)構(gòu)示意圖;
[0053] 圖7為本發(fā)明實(shí)施例中順序處理器另一個(gè)結(jié)構(gòu)示意圖;
[0054] 圖8為本發(fā)明實(shí)施例中順序處理器另一個(gè)結(jié)構(gòu)示意圖;
[00巧]圖9為本發(fā)明實(shí)施例中流水線一個(gè)結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0056] 下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;?本發(fā)明中的實(shí)施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施 例,都屬于本發(fā)明保護(hù)的范圍。
[0057] 請參閱圖1,本發(fā)明實(shí)施例中指令執(zhí)行方法一個(gè)實(shí)施例包括:
[0058] 101、當(dāng)順序處理器的一條流水線內(nèi)有預(yù)置數(shù)目個(gè)串行在一起的功能單元時(shí),所述 順序處理器確定所述預(yù)置數(shù)目為每個(gè)指令組合的最大執(zhí)行拍數(shù);
[0059] 當(dāng)順序處理器的一條流水線內(nèi)有預(yù)置數(shù)目個(gè)串行在一起的功能單元時(shí),該順序處 理器確定該預(yù)置數(shù)目為每個(gè)指令組合的最大執(zhí)行拍數(shù),該順序處理器用于表示使用順序執(zhí) 行的指令調(diào)度方法的處理器。
[0060] 其中,該功能單元也可W稱之為執(zhí)行單元,用于執(zhí)行指令動(dòng)作,設(shè)定一個(gè)