gem5学习(14):将gem5扩展到ARM——Extending gem5 for ARM

2024-01-13 15:12
文章标签 学习 14 扩展 arm gem5 extending

本文主要是介绍gem5学习(14):将gem5扩展到ARM——Extending gem5 for ARM,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、Downloading ARM Binaries

二、Building gem5 to run ARM Binaries

三、Modifying simple.py to run ARM Binaries

四、Running gem5

五、ARM Full System Simulation

An aside on FS simulations


这个是gem5-learning中Getting Started的最后一篇文章,其实我现在基本不用ARM的ISA,但是为了保持教程的连贯性,还是把最后一篇更新完。

这个教程的前提是:已经使用gem5构建了一个基本的X86系统,并创建了一个简单的配置脚本。

一、Downloading ARM Binaries

定位到gem5文件夹的根目录,下载一些ARM基准测试二进制文件。

这些二进制文件在后面将会对ARM系统进行进一步测试。

二、Building gem5 to run ARM Binaries

下载完二进制文件后,返回到gem5的根目录下。

和前面使用X86配置不同,这里使用默认的ARM配置进行编译【教程里给的线程数太多了,我的主机是4核,所以我用了CPU数+1】。

scons build/ARM/gem5.opt -j 5

初次编译时间有点长,大概半小时。

如果编译完成的话,会在build/ARM/目录中生成一个有效的gem5运行文件gem5.opt。

三、Modifying simple.py to run ARM Binaries

在=使用新系统运行任何ARM二进制文件之前,=需要对config中的配置文件simple.py进行一些修改。

前面在创建简单配置脚本时,有特别说明除了x86系统之外,不需要将PIO和中断端口连接到内存总线。因此,需要删除或者注释掉这三行代码:

然后将进程的命令设置为刚才下载的ARM基准测试二进制文件之一:

process.cmd = ['cpu_tests/benchmarks/bin/arm/Bubblesort']

如果想测试一个简单的hello程序,只需将x86替换为arm:

process.cmd = ['tests/test-progs/hello/bin/arm/linux/hello']

四、Running gem5

运行一个比较简单的程序。

build/ARM/gem5.opt configs/tutorial/simple.py

如果将进程设置为Bubblesort基准测试,输出应如下所示:

……
warn: readlink() called on '/proc/self/exe' may yield unexpected results in various settings.Returning '/home/jtoya/gem5/cpu_tests/benchmarks/bin/arm/Bubblesort'
-50000
Exiting @ tick 258647411000 because exiting with last active thread context

(截止到教程写完也没编译完成,所以我直接截取了官网的输出结果,应该没有出入)

五、ARM Full System Simulation

要运行ARM FS模拟,需要对设置进行一些更改。

从gem5根目录中,通过运行以下命令进入util/term/目录:

cd util/term/

然后通过运行以下命令编译m5term二进制文件:

make

gem5存储库附带了示例系统设置和配置。这些可以在configs/example/arm/目录中找到。

在这里提供了一组完整的系统Linux镜像文件。将它们保存在一个目录中,并记住其路径。例如,你可以将它们存储在以下目录中:

/path/to/user/gem5/fs_images/

在接下来的示例中,假设fs_images目录包含提取的FS映像。

下载完镜像后,在终端中执行以下命令:

export IMG_ROOT=/absolute/path/to/fs_images/<image-directory-name>

将“<image-directory-name>”替换为从下载的镜像文件中提取的目录名称【最终名称不带尖括号】。

准备运行FS ARM模拟。从gem5存储库的根目录中运行以下命令:

./build/ARM/gem5.opt configs/example/arm/fs_bigLITTLE.py \--caches \--bootloader="$IMG_ROOT/binaries/<bootloader-name>" \--kernel="$IMG_ROOT/binaries/<kernel-name>" \--disk="$IMG_ROOT/disks/<disk-image-name>" \--bootscript=path/to/bootscript.rcS

将尖括号中的任何内容替换为目录或文件的名称,不包括尖括号。

然后,在另一个终端窗口中,通过运行以下命令连接到模拟:

./util/term/m5term 3456

要获取fs_bigLITTLE.py脚本支持的完整详细信息,可以运行:

./build/ARM/gem5.opt configs/example/arm/fs_bigLITTLE.py --help

An aside on FS simulations

FS模拟时间比较长,比如“加载内核需要1小时”。

有关FS的更多详细信息,可以直接查看gem5: X86 Full-System Tutorial

【因为还没编译完成,所以我就不贴最后的结果图了】

这篇关于gem5学习(14):将gem5扩展到ARM——Extending gem5 for ARM的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/601886

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学