不對稱(chēng)內核的引導固件體系結構
摘要
本文引用地址:http://dyxdggzs.com/article/201808/387566.htm過(guò)去,支持不同計算內核(對稱(chēng)/不對稱(chēng)架構)的處理器通常從一個(gè)特定的內核(一般為主內核或內核0)引導。由于經(jīng)濟增長(cháng)放緩,半導體公司力求創(chuàng )新,尋求不同的方式和方法提高經(jīng)濟效益,增加其毛利率。片上系統(SoC)解決方案旨在滿(mǎn)足多個(gè)領(lǐng)域的要求。如支持不對稱(chēng)引導,各個(gè)公司可使用相同的光刻掩模將SoC的目標范圍擴展到各個(gè)不同的市場(chǎng)。
概述
人們對互連世界的渴望催生了獨特的系統架構設計,包括使用同構或異構計算架構的單核系統及多核架構。
目前設計的復雜應用需要支持在系統中執行特定功能的特殊硬件加速器。這些以ASIC(特定用途集成電路)、FPGA(現場(chǎng)可編程門(mén)陣列)、GPU(圖形處理單元)等形式實(shí)現。這些不同的功能單元大多采用不同的指令集架構(ISA)。
背景
過(guò)去,支持不同計算內核(對稱(chēng)/不對稱(chēng)架構)的處理器通常從一個(gè)特定的內核(一般指定為主內核或內核0)引導。由于經(jīng)濟增長(cháng)放緩,半導體公司力求創(chuàng )新,尋求不同的方式和方法來(lái)提高經(jīng)濟效益,增加其毛利率。片上系統(SoC)解決方案旨在滿(mǎn)足多個(gè)領(lǐng)域的要求。如支持不對稱(chēng)引導,各個(gè)公司可使用相同的光刻掩模將SoC的目標范圍擴展到各個(gè)不同的市場(chǎng)。例如,如果一個(gè)SoC有一個(gè)應用處理器(AP)和一個(gè)實(shí)時(shí)控制器內核,SoC可從AP或實(shí)時(shí)控制器引導,同一個(gè)SoC不僅可用于高性能(采用AP引導方式)應用,還可用于關(guān)鍵任務(wù)(低延遲、關(guān)鍵時(shí)間應用)應用。
什么是不對稱(chēng)內核?
不對稱(chēng)內核是指一個(gè)系統的兩個(gè)及以上的處理元件或單元擁有不同的指令集架構(ISA)。這些內核為整個(gè)系統提供特定的功能,如改善系統的處理能力或加快系統的反應速度等。
因此不對稱(chēng)內核系統軟件設計就成了一個(gè)難題。如果SoC支持從多個(gè)內核引導,問(wèn)題則變得更加復雜。第一個(gè)問(wèn)題是引導體系結構。本文闡述采用不對稱(chēng)內核架構的引導固件設計。
引導體系結構的設計標準
在定義此類(lèi)系統的引導體系結構時(shí)會(huì )遇到各種問(wèn)題,不是每個(gè)問(wèn)題都有通用的解決方案。有時(shí)一個(gè)解決方案還需要硬件支持。以下是設計人員遇到的一些設計問(wèn)題:
● 指令集架構(ISA)兼容性
● 上電復位向量位置
指令集架構兼容性
第一個(gè)也是最重要的設計挑戰是不同內核的指令集架構(ISA)兼容性問(wèn)題。ISA是指硬件和軟件之間的邊界。ISA用于將助記符轉換成機器語(yǔ)言(能夠被處理器理解)。
根據ISA,引導體系結構可分為兩個(gè)部分:
a.ISA不兼容
這意味著(zhù)為一個(gè)內核編寫(xiě)的軟件無(wú)法被其它內核理解。在此類(lèi)系統中,引導代碼對不同的內核是完全不同的。
b.ISA部分兼容
這意味著(zhù)不同的內核支持一個(gè)共同的ISA版本,例如,包含ARM Cortex-A和Cortex-M內核的系統。對于此類(lèi)系統,引導代碼分為兩部分。
● 第一部分是特定內核的引導代碼,實(shí)現單個(gè)內核的特定軟件功能。
● 第二部分是采用通用ISA實(shí)現的公共引導代碼,實(shí)現批量引導功能。該軟件調用第一部分實(shí)現的特定內核的軟件。
許多處理器架構采用處理器ID或CPU ID等寄存器。SoC設計人員針對不同的內核對該寄存器賦予不同的值。通過(guò)讀取該處理器ID寄存器來(lái)識別內核類(lèi)型。根據該寄存器,引導代碼可決定實(shí)現特定內核的功能。要點(diǎn)是公共引導代碼可在不同內核上執行相同的指令,再根據執行內核產(chǎn)生不同的結果。
● 公共寄存器:
如果該寄存器是內存映射的,那么訪(fǎng)問(wèn)該寄存器的地址對于所有內核都必須相同。例如,在對接ARM Cortex-Ax和Cortex-Mx時(shí),處理器ID寄存器通過(guò)不同的助記符訪(fǎng)問(wèn)。因此,在此類(lèi)SOC設計中需要采用內存映射寄存器,識別執行內核的機制也與硬件相關(guān)。
● 使用相同的指令讀取處理器ID/CPU ID:
在某些情況下,將寄存器作為某種特殊目的寄存器(Special Purpose Register)(如在PowerPC的情況下)。應注意,相同的指令可用于通過(guò)不同的內核訪(fǎng)問(wèn)該寄存器。例如,當在SoC中集成Z2和Z4 PowerPC內核時(shí),用SPR 286寄存器訪(fǎng)問(wèn)處理器ID。
上電復位向量位置
上電復位向量位置表示加載到內核程序計數器的地址,當內核復位后從該地址提取第一個(gè)指令,這對不對稱(chēng)內核SoC引導體系結構提出了一個(gè)重大的設計挑戰。包含多個(gè)內核的SoC可設計為從任何可用內核進(jìn)行引導。大多數情況下,從哪個(gè)內核引導是可配置的,但是,由于引導軟件駐留到微處理器的ROM區域,因此引導軟件應能夠在選定的引導內核上運行。
那么復位向量位置為引導軟件帶來(lái)了什么挑戰呢?對稱(chēng)內核是絕對沒(méi)有問(wèn)題的。這是因為對于對稱(chēng)內核來(lái)說(shuō),引導向量位置解析是相同的。但是,對于不對稱(chēng)內核來(lái)說(shuō),則會(huì )產(chǎn)生問(wèn)題,這有兩個(gè)主要原因:
● 復位向量對于所有可引導的內核都不同。
● 兩個(gè)或以上可引導的不對稱(chēng)內核有一個(gè)公共的復位向量位置。
復位向量對于所有可引導的內核都不同
如果復位向量對于所有可引導的內核都不同,那么這個(gè)問(wèn)題的解決方案可在引導軟件中實(shí)現,如下圖所示。引導軟件將位于ROM內存區的不同位置,內核在上電復位后將從該位置跳轉。
兩個(gè)或以上可引導的不對稱(chēng)內核有一個(gè)公共的復位向量位置
當各種不對稱(chēng)可引導內核共享復位向量時(shí),問(wèn)題會(huì )變復雜。
● 復位向量位置解析
即使復位向量位置對于兩個(gè)或以上不對稱(chēng)內核是相同的,然而,復位向量位置可用的數據的解析對于不同的內核可能會(huì )不同。例如,如果一個(gè)SoC有兩個(gè)不對稱(chēng)內核Cortex-Ax和Cortex-Mx,那么復位向量位置對于這兩個(gè)內核均為0x0000_0000。該地址可用的數據被這兩個(gè)內核以不同的方式解析。Cortex-Ax將該數據解析為一個(gè)指令,導致跳轉到引導固件代碼將駐留的位置。但同樣的數據被Cortex-Mx內核解析為堆棧指針。
● 指令集架構不兼容
復位向量位置呈現的代碼可被一個(gè)內核理解,但無(wú)法被另一個(gè)內核理解。這可能會(huì )產(chǎn)生異常,或者使不能理解代碼的內核進(jìn)入不可預知的狀態(tài)。
在這種情況下,人們可能想把失敗內核的復位向量位置轉到不同的地址位置,即映射到閃存或任何非易失性存儲器位置。不能僅在軟件設計中解決此類(lèi)問(wèn)題,還需要硬件支持。該解決方案需要SoC硬件的地址轉換邏輯,將所有可引導不對稱(chēng)內核總線(xiàn)上的復位向量地址轉換為復位向量表駐留的ROM存儲器區的不同位置。
結束語(yǔ)
本文展示了為不對稱(chēng)內核系統設計引導體系結構的不同設計方法。此類(lèi)系統的設計方法不限于本文所述內容,但主要受SOC設計的限制。設計人員甚至可以根據硬件架構結合使用所述不同方法。
評論