CPU ARCH
linuxer_zxp
专注于Linux内核及驱动开发!
展开
-
psudo-LRU(Tree LRU) 算法原理
psudo-LRU 算法的其中一个应用场景是cache line 的换出策略,是LRU算法的升级版1.算法原理: 一个组相连的cache,一个way有4个entry,L0,L1,L2,L3共用3位LRU位r0,r1,r2。2.LRU三个标志位r0,r1,r2 置位算法:如果最近访问的是L0或L1,则r0位置1;否则(最近访问的是L2或者L3), 则r0位置0. 在L0,L1之间,若最近访问的是L0,则r1置1; 否则,r1置0. 在L2和L3之间,若最近访问的是L2,则r2...原创 2021-02-26 16:49:39 · 1605 阅读 · 0 评论 -
Armv8架构虚拟化介绍
1 综述本文描述了Armv8-A AArch64的虚拟化支持。包括stage 2页表转换,虚拟异常,以及陷阱。本文介绍了一些基础的硬件辅助虚拟化理论以及一些Hypervisor如何利用这些虚拟化特性的例子。文本不会讲述某一具体的Hypervisor软件是如何工作的以及如何开发一款Hypervisor软件。通过阅读本文,你可以学到两种类型的Hypervisor以及它们是如何映射到Arm的异常级别。你将能解释陷阱是如何工作的以及其是如何被用来进行各种模拟操作。你将能描述Hypervisor可以产生什么虚拟转载 2021-02-24 11:42:43 · 1499 阅读 · 1 评论 -
ARM64 寄存器
当前程序状态寄存器 (CPSR):存放 APSR 标记,当前处理器模式,中断禁用标记等 ; 保存的程序状态寄存器 (SPSR):当发生异常时,使用 SPSR 来存储 CPSR;原创 2021-02-05 19:08:25 · 710 阅读 · 0 评论 -
ARM64 指令集
1.异常处理指令指令 描述 SVC 系统调用指令:SVC #imm,允许应用程序通过SVC指令自陷到操作系统中,通常会进入EL1; HVC 虚拟化系统调用指令:HVC #imm,允许主机操作系统通过HVC指令自陷入到虚拟机管理程序中(EL2) SMC 安全监控系统调用指令:SMC #imm,允许主机操作系统或者管理程序通过SMC指令自陷入到安全监管程序。(EL3) 2.系统寄存器访问指令指令 描述 MRS 读...原创 2021-02-01 20:55:49 · 1346 阅读 · 0 评论 -
算术移位和逻辑移位的区别
1. 算术移位与逻辑移位算术移位指令对带符号数进行移位。逻辑移位指令对无符号数进行移位。算术左移、右移,逻辑左移、右移的图示如下这里有一个进位位C,它就是标志寄存器 (即状态寄存器,亦称程序状态字寄存器PSW)中的那个进位位,指示是否有进位或者借位,若有则该位为1,否则为0。逻辑左移跟算术左移完全一样。而逻辑右移跟算术右移则不一样,逻辑右移的最高位在移出后补0,而在算术右移中,最高位(这里的最高位指整个编码的最高位,即有符号数的符号位)不变,其他跟逻...转载 2021-02-01 16:42:25 · 19743 阅读 · 0 评论 -
内存屏障产生的原因及ARM提供的memory barrier 指令
程序执行时实际内存访问顺序和程序代码编写的访问顺序不一致,会导致内存乱序访问(注意:和指令的乱序执行是两码事)原创 2021-01-30 18:44:11 · 942 阅读 · 0 评论 -
CPU 处理器技术名词
1.流水线: 现代处理器采用5级流水线的方式,分别是取指,译码,执行,数据内存访问(发射),写回;2.超标量:在一个时钟周期内处理多条指令,实现指令并行处理;3.乱序:原创 2021-01-29 21:02:46 · 429 阅读 · 0 评论 -
如何判断一个CPU架构是大端模式还是小端模式
union 联合体特点:一、成员首地址相同,也就是通过不同的成员访问会从相同的起始地址开始取数据,至于取多少个地址的数据取决于具体成员的类型。二、union内存空间的分配按照其占用内存最大的成员来进行分配下面这段代码利用联合体的第一个特性来判断CPU的大小端模式:输出的如果是true,则为小端模式,否则是大端模式;#include<stdio.h>#include<stdlib.h>int checkcpu(void){ union w..原创 2021-01-28 20:18:29 · 715 阅读 · 1 评论