摘要
曩昔,支撑不同核算内核(对称/不对称架构)的处理器一般从一个特定的内核(一般为主内核或内核0)引导。由于经济添加放缓,半导体公司力求立异,寻求不同的办法和办法进步经济效益,添加其毛利率。片上体系(SoC)处理方案旨在满意多个范畴的要求。如支撑不对称引导,各个公司可运用相同的光刻掩模将SoC的方针规模扩展到各个不同的商场。
概述
人们对互连国际的巴望催生了一起的体系架构规划,包括运用同构或异构核算架构的单核体系及多核架构。
现在规划的杂乱运用需求支撑在体系中履行特定功用的特别硬件加速器。这些以ASIC(特定用处集成电路)、FPGA(现场可编程门阵列)、GPU(图形处理单元)等办法完成。这些不同的功用单元大多选用不同的指令集架构(ISA)。
布景
曩昔,支撑不同核算内核(对称/不对称架构)的处理器一般从一个特定的内核(一般指定为主内核或内核0)引导。由于经济添加放缓,半导体公司力求立异,寻求不同的办法和办法来进步经济效益,添加其毛利率。片上体系(SoC)处理方案旨在满意多个范畴的要求。如支撑不对称引导,各个公司可运用相同的光刻掩模将SoC的方针规模扩展到各个不同的商场。例如,假如一个SoC有一个运用处理器(AP)和一个实时控制器内核,SoC可从AP或实时控制器引导,同一个SoC不只可用于高性能(选用AP引导办法)运用,还可用于要害使命(低推迟、要害时刻运用)运用。
什么是不对称内核?
不对称内核是指一个体系的两个及以上的处理元件或单元具有不同的指令集架构(ISA)。这些内核为整个体系供给特定的功用,如改进体系的处理才能或加速体系的反应速度等。
因而不对称内核体系软件规划就成了一个难题。假如SoC支撑从多个内核引导,问题则变得愈加杂乱。榜首个问题是引导体系结构。本文论述选用不对称内核架构的引导固件规划。
引导体系结构的规划标准
在界说此类体系的引导体系结构时会遇到各种问题,不是每个问题都有通用的处理方案。有时一个处理方案还需求硬件支撑。以下是规划人员遇到的一些规划问题:
● 指令集架构(ISA)兼容性
● 上电复位向量方位
指令集架构兼容性
榜首个也是最重要的规划应战是不同内核的指令集架构(ISA)兼容性问题。ISA是指硬件和软件之间的鸿沟。ISA用于将助记符转化成机器语言(能够被处理器了解)。
依据ISA,引导体系结构可分为两个部分:
a.ISA不兼容
这意味着为一个内核编写的软件无法被其它内核了解。在此类体系中,引导代码对不同的内核是彻底不同的。
b.ISA部分兼容
这意味着不同的内核支撑一个一起的ISA版别,例如,包括ARM Cortex-A和Cortex-M内核的体系。关于此类体系,引导代码分为两部分。
● 榜首部分是特定内核的引导代码,完成单个内核的特定软件功用。
● 第二部分是选用通用ISA完成的公共引导代码,完成批量引导功用。该软件调用榜首部分完成的特定内核的软件。
许多处理器架构选用处理器ID或CPU ID等寄存器。SoC规划人员针对不同的内核对该寄存器赋予不同的值。经过读取该处理器ID寄存器来辨认内核类型。依据该寄存器,引导代码可决定完成特定内核的功用。关键是公共引导代码可在不同内核上履行相同的指令,再依据履行内核发生不同的成果。
● 公共寄存器:
假如该寄存器是内存映射的,那么拜访该寄存器的地址关于一切内核都必须相同。例如,在对接ARM Cortex-Ax和Cortex-Mx时,处理器ID寄存器经过不同的助记符拜访。因而,在此类SOC规划中需求选用内存映射寄存器,辨认履行内核的机制也与硬件相关。
● 运用相同的指令读取处理器ID/CPU ID:
在某些情况下,将寄存器作为某种特别意图寄存器(Special Purpose Register)(如在PowerPC的情况下)。应留意,相同的指令可用于经过不同的内核拜访该寄存器。例如,当在SoC中集成Z2和Z4 PowerPC内核时,用SPR 286寄存器拜访处理器ID。
上电复位向量方位
上电复位向量方位表明加载到内核程序计数器的地址,当内核复位后从该地址提取榜首个指令,这对不对称内核SoC引导体系结构提出了一个严重的规划应战。包括多个内核的SoC可规划为从任何可用内核进行引导。大多数情况下,从哪个内核引导是可装备的,可是,由于引导软件驻留到微处理器的ROM区域,因而引导软件应能够在选定的引导内核上运转。
那么复位向量方位为引导软件带来了什么应战呢?对称内核是肯定没有问题的。这是由于关于对称内核来说,引导向量方位解析是相同的。可是,关于不对称内核来说,则会发生问题,这有两个首要原因:
● 复位向量关于一切可引导的内核都不同。
● 两个或以上可引导的不对称内核有一个公共的复位向量方位。
复位向量关于一切可引导的内核都不同
假如复位向量关于一切可引导的内核都不同,那么这个问题的处理方案可在引导软件中完成,如下图所示。引导软件将坐落ROM内存区的不同方位,内核在上电复位后将从该方位跳转。
两个或以上可引导的不对称内核有一个公共的复位向量方位
当各种不对称可引导内核同享复位向量时,问题会变杂乱。
● 复位向量方位解析
即便复位向量方位关于两个或以上不对称内核是相同的,但是,复位向量方位可用的数据的解析关于不同的内核或许会不同。例如,假如一个SoC有两个不对称内核Cortex-Ax和Cortex-Mx,那么复位向量方位关于这两个内核均为0x0000_0000。该地址可用的数据被这两个内核以不同的办法解析。Cortex-Ax将该数据解析为一个指令,导致跳转到引导固件代码将驻留的方位。但相同的数据被Cortex-Mx内核解析为仓库指针。
● 指令集架构不兼容
复位向量方位出现的代码可被一个内核了解,但无法被另一个内核了解。这或许会发生反常,或许使不能了解代码的内核进入不行预知的状况。
在这种情况下,人们或许想把失利内核的复位向量方位转到不同的地址方位,即映射到闪存或任何非易失性存储器方位。不能仅在软件规划中处理此类问题,还需求硬件支撑。该处理方案需求SoC硬件的地址转化逻辑,将一切可引导不对称内核总线上的复位向量地址转化为复位向量表驻留的ROM存储器区的不同方位。
结束语
本文展现了为不对称内核体系规划引导体系结构的不同规划办法。此类体系的规划办法不限于本文所述内容,但首要受SOC规划的约束。规划人员乃至能够依据硬件架构结合运用所述不同办法。