系统与设计
的意见

定义处理器核心复杂度

根据项目的需要,处理器可以以许多不同的方式变得复杂。

受欢迎程度

处理器核心越复杂,其面积和功耗就越大。但是增加复杂性并不是单一的维度,因为处理器可以通过不同的方式变得更加复杂。在选择处理器IP核时,为你的项目选择合适的复杂度是很重要的。

考虑复杂性的一些方法包括:

  • 字长
  • 执行单元
  • 特权/保护
  • 虚拟内存
  • 安全特性

一般来说,字长越小,核心越小,功率越低,但情况并非总是如此。8位内核(如8051)的门数与最小的32位内核相当,但功耗通常更低。8位内核需要更多的内存访问,因为每个时钟周期的计算量更少,需要更多的周期。最终的影响是,它需要更多的功率来完成计算。

处理器内核在其执行单元的复杂性方面差别很大。最简单的是基本的单个alu,它需要通过简单的指令来实现许多常见的操作—例如使用shift和add来实现乘法。因此,对于核心来说,拥有硬件乘法器和除法器是很常见的。如果需要良好的浮点性能,添加硬件浮点单元将提供更好的性能。此选项适用于Codasip的Bk3和Bk5 RISC-V内核,但价格大约是内核大小的两倍。

到目前为止,我们已经假设了单个计算线程和一次执行一条指令的标量处理单元。超标量体系结构具有指令级并行性,能够获取多条指令并将它们分派到不同的执行单元。例如,西部数据的EH1和EH2 SweRV内核有两个执行单元。理论上,处理一个线程的双问题核心的性能可以达到单问题核心的两倍。但是,线程可能会使两个执行单元暂时处于非活动状态。如果有两个硬件线程(hart),那么如果一个线程停止,另一个线程可以继续执行。

处理器在管道深度上可以有很大的不同,并且在这个深度和延迟之间有直接的关系。一些应用程序可以容忍高延迟,其结果是对中断的响应较慢,以换取高时钟频率和吞吐量。其他应用程序需要快速响应中断,因此需要更短的管道。

另一个复杂的领域是特权模式——模式越多,核心逻辑就越复杂。许多嵌入式应用程序在机器模式下运行,这意味着代码对Linux中类似核心的根特权具有完全访问权限。这样的代码必须完全可信,以避免负面后果。在更复杂的应用程序中,可以提供一系列特权,如机器、主管和用户。正常的应用程序将在具有最大保护的用户模式下运行,而一些需要更大特权的软件将使用管理员模式。Linux需要所有这三种模式,这就是为什么Codasip开发了支持它们的Bk7内核并支持Linux的原因。

虚拟内存还需要额外的处理器资源,如内存管理单元(MUU)和转换暂置缓冲区(TLB),以处理将虚拟内存地址转换为物理地址的问题。这在面积和功耗方面带来了额外的成本,而没有提高处理器吞吐量。然而,虚拟内存对于使用丰富的操作系统(如Linux)是必要的,这些操作系统可以使用更复杂的软件。

因此,在选择处理器核心时,请确定需要哪种类型的执行单元、内存管理、特权和安全性。这种组合将决定核心的复杂性。



留言回复


(注:此名称将公开显示)

Baidu