系统控制类指令¶
系统控制类指令主要分为执行控制类指令、断言指令、内存屏障类指令和系统调用类指令。
执行控制类指令¶
执行控制类指令在计算机系统中扮演着关键角色,它们用于实现系统执行过程的控制,包括管理系统的不同组件之间的通信和协调,确保系统能够高效、有序地执行任务。这些指令通常涉及到系统管理、事件处理、状态转移和资源释放等功能。
断言指令¶
断言类指令通常用于系统执行过程中的条件检查,如果条件不满足则触发异常或者中断,以便能够及时发现和处理错误。
内存屏障类指令¶
什么是内存屏障¶
现代大多数计算机为了提高性能而采取乱序执行,这可能导致程序运行顺序不符合我们预期,内存屏障指令就是一类同步屏障指令,是CPU或者编译器对内存随机访问操作中的一个同步点,只有在该同步点之前的所有读写操作都执行完成后才可以执行该同步点之后的操作。
为什么会出现内存屏障¶
为了解决程序在运行过程中出现的内存乱序访问问题,内存乱序访问是为了提高程序运行时的性能,而内存屏障可以让CPU或者编译器在内存访问上有序。
系统调用类指令¶
系统调用类指令是用于在计算机系统中调用操作系统服务的一类指令。这些指令允许用户程序或内核模块请求操作系统执行特定任务,如文件操作、网络通信、内存管理、进程调度等。系统调用类指令通常涉及从用户态到内核态的转换,需要严格的权限控制和上下文切换。
系统控制类指令列表¶
| 微指令 | 汇编格式 | 描述 |
|---|---|---|
| 执行控制类指令 | ||
| BSE | bse SrcL | 发送自定义事件给外部系统 |
| BWE | bwe SrcL | 处理器当前线程进入休眠状态等待外部事件唤醒 |
| BWI | bwi SrcL | 处理器当前线程进入休眠状态等待外部中断唤醒 |
| BWA | bwa SrcL | 处理器当前线程进入休眠状态并等待指定地址对应Cacheline进入Cache后唤醒 |
| ASSERT | assert SrcL | 满足SrcL为0的条件后,终止程序,触发断言异常,跳转至主动修复块进行处理 |
| 内存屏障类指令 | ||
| DSB | dsb perd_imm, succ_imm | 用于同步数据流 |
| ISB | isb | 用于同步指令流 |
| 系统调用类指令 | ||
| ACRC | acrc request_type | 设置当前块的系统调用状态,块提交后发起相应的系统请求 |
| ACRE | acre SrcL, ACRn | 设置并且切换至目标ACR |
指令编码如下: