简介
mhartid(Machine Hart ID Register)是 RISC-V 架构中的一个控制和状态寄存器(CSR),用于存储当前硬件线程(hart)的标识符。
在多核处理器中,每个核心可能有一个或多个硬件线程,每个硬件线程都有一个唯一的 hartid。
在多核处理器中,每个核心(或硬件线程)都有自己独立的一套寄存器集。这意味着如果有两个核心,每个核心有 32 个通用寄存器,那么整个处理器实际上会有 64 个通用寄存器。每个核心的寄存器集是独立的,互不干扰。
代码演示
#include <stdio.h>
#include <stdint.h>// 读取 mhartid 寄存器的函数
uint64_t read_mhartid() {uint64_t hartid;asm volatile ("csrr %0, mhartid" : "=r" (hartid));return hartid;
}int main() {uint64_t hartid = read_mhartid();printf("Current hart ID: %lu\n", hartid);return 0;
}
多核处理器
指在单个物理处理器芯片上集成了多个独立的处理核心(cores)。每个核心可以独立执行指令流,相当于多个处理器工作在一起。每个核心通常被视为一个硬件线程。
比如 双核处理器(有两个独立的核心,通常有两个硬件线程)
超线程处理器
允许每个物理核心同时处理多个线程。每个物理核心可以被视为多个逻辑核心,每个逻辑核心被视为一个硬件线程。
比如:双核处理器支持超线程:(每个物理核心可以处理两个线程,总共有四个硬件线程)
多处理器系统
比如:双处理器系统:(每个处理器有四个核心,每个核心支持超线程,总共有 2×4×2 = 16个硬件线程)。
专用硬件加速器
GPU(图形处理单元):通常具有数百到数千个核心,每个核心可以处理多个线程。
AI 加速器:例如 Google 的 TPU,具有大量的处理单元,每个单元可以处理多个线程