gem5分支预测──LocalBP
LocalBP 是 gem5 中最简单的分支预测算法,代码在 src/cpu/pred/2bit_local.cc 主要组件1. 计数器表 (localCtrs)一个数组,每个元素是一个 2-bit 饱和计数器(可配置)。默认 1024 个表项(可配置),每个表项对应一个或多个分支指令(可能存在 hash 冲突)。这里以默认举例。 2. 2-bit 饱和计数器 状态值 二进制 含义 预测结果 0 00 Strongly Not Taken 不跳转 1 01 Weakly Not Taken 不跳转 2 10 Weakly Taken 跳转 3 11 Strongly Taken 跳转 判断规则:看最高位 (MSB) MSB = 0 (值 0,1) → 预测不跳转 MSB = 1 (值 2,3) → 预测跳转 状态转换也很简单,跳转就 +1,没有跳转就 -1: 123456 +1 (taken) +1 (taken) +1 (taken)00 ───────────> 01 ───────────&g...
毕设──基于虚拟机的智能体沙箱的设计与实现(1)
最近一直在学习 C++ 的代码相关知识。因为马上要交开题报告了,所以找了个空闲的时间看了下毕设相关的内容。 毕设就是个 Agent 代码执行沙箱,为什么要选这个题目呢?第一是对虚拟机这方面挺感兴趣的,第二就是之前在红队做过针对 Agent 代码执行的攻击,有一定了解。 技术方案选型目前阶段主要还是去选择用啥去实现这个沙箱,目前的话主要是试试下面这几种: 1. WASM启动很快,因为是进程级别的虚拟机,不涉及虚拟化乱七八糟的,开销很小,就是把不同语言编译为可以跑在 WASM 虚拟机上的字节码。 默认权限很小,只有纯计算和调用显式提供 API 的能力。但是兼容性不行,语言支持受限(尤其是本来就跑在虚拟机上的语言,需要把它的虚拟机编译为 WASM,然后跑在 WASM 虚拟机上),系统调用受限。并且不像 Docker,想要什么镜像直接拉下来就行,得去将想运行的组件编译为 WASM。 2. DockerDocker 主要就是选运行时: runc:用 Linux 的 Namespace 和 Cgroups 做隔离、资源限制,不涉及虚拟化。好处就是快,缺点就是不够安全,因为内核共享,内核漏洞...






