标签: c

CacheSim-3 详细实现check_cache_hit等函数

Introduction CacheSim 简单的Cache模拟器 专辑目录本文详细说明load_trace、check_cache_hit等函数。 1.程序入口 main.cpp主要针对一个测试文件,配置了不同cache line大小,不同组相联路数,不同的替换策略。默认使用写回法。默认cache大小32KB(0x8000 Bytes)。在每次循环里,首先初始化cache的配置,然后设置替换策略,最后读入trace文件并开始模拟内存读写过程。 2.初始化 在类CacheSim的构造函数里,主要...

CacheSim-2 类的设计

Introduction CacheSim 简单的Cache模拟器 专辑目录本文说明了模拟的Cache需要完成的功能,以及大体框架设计,通过头文件内容的说明,使读者获得整体的认识。 1.模拟Cache需要完成的功能 1.1 指令读取 由于主存访问trace以文件形式给出,trace文件下载所以需要从文件中读取访存trace。其中trace的格式如下: s 0x1fffff50 1 每行的第一个字符是表示该条指令的类型,s为写(store),r为读(read)。中间的十六进制数为内存地址,最后一个...

CacheSim-1 Cache背景知识简介

Introduction CacheSim 简单的Cache模拟器 专辑目录 本文简要介绍Cache的背景知识,以及Cache结构的划分。 在计算机系统中,CPU高速缓存(英语:CPU Cache,在本文中简称缓存)是用于减少处理器访问内存所需平均时间的部件。在金字塔式存储体系中它位于自顶向下的第二层,仅次于CPU寄存器。其容量远小于内存,但速度却可以接近处理器的频率。 当处理器发出内存访问请求时,会先查看缓存内是否有请求数据。如果存在(命中),则不经访问内存直接返回该数据;如果不存在(失效),...

手把手教你写Cache模拟器

Introduction 项目地址: 也放到了CacheSim-开源中国上 这个专辑记录了写一个非常简单的cache模拟器的过程。 主要是因为我要做的研究里,使用gem5来跑程序太慢了,所以只能自己在项目里实现一个简易的cache模拟器,获得一些实验数据。 正好加州大学圣迭戈分校(University of California, San Diego,简称为UCSD,又常译为加州大学圣地亚哥分校)有一门Principles of Computer Archictecture的课程,其中有个cac...

Cmake的使用[转]

Introducation 本文系转载,源于我要修改CLion自动生成的cmakelist。 一、基本使用 安装:下载二进制包后可直接解压使用 从源码安装则执行命令:./bootstrap; make; make install——尝试执行bootstrap失败 使用:cmake dir_path,生成工程文件或makefile文件 二、概念 out-of-source build,与in-source build相对,即将编译输出文件与源文件放到不同目录中; 三、基本结构 依赖CMakeLis...

C++实验指导(算术表达式求值)(给学弟学妹看的)

算术表达式求值 实验要求 基础要求: 四则运算 带括号 进阶要求: 次幂 负数 实验报告格式 个人信息 实验要求 实验内容 实验结果及分析 遇到的问题及解决方式 总结 样例代码说明 课件中的要求是先将表达式转换成后缀表达式,然后再计算这个后缀表达式。 我把代码改成了纯C的,queue用链表模拟,stack用数组模拟。其中两次用到了stack,由于数据类型不同,所以写了两个结构体,但实际上,可以合成一个,通过添加一个标记变量来识别。为了代码的简单,我没有添加各种边界检查,这并不是一个好习惯,很容易...

信息安全实验RC4和MD5

信息安全实验 RC4和MD5 实验要求 RC4和MD5。将用户的密码通过md5加密之后作为RC4加密的输入key进行设置RC4的密钥,并使用此密钥对用户内容进行加密。 实验 几个关键词 密钥流:RC4算法的关键是根据明文和密钥生成相应的密钥流,密钥流的长度和明文的长度是对应的,也就是说明文的长度是500字节,那么密钥流也是500字节。当然,加密生成的密文也是500字节,因为密文第i字节=明文第i字节^密钥流第i字节; 状态向量S:长度为256,S[0],S[1]…..S[255]。每个单元都...

并行计算实验(五)Pthread

Pre Pthreads 是 IEEE(电子和电气工程师协会)委员会开发的一组线程接口,负责指定便携式操作系统接口(POSIX)。Pthreads 中的 P 表示 POSIX,实际上,Pthreads 有时候也代表 POSIX 线程。基本上,POSIX 委员会定义了一系列基本功能和数据结构,它希望能够被大量厂商采用,因此线程代码能够轻松地在操作系统上移植。委员会的梦想由 UNIX 厂商实现了,他们都大规模实施 Pthreads。(最著名的例外就是 Sun,它继续采用 Solaris* 线程作为其...

并行计算实验(四)OPENMP

OPENMP OpenMP是专门针对共享地址空间的平行计算机提供的并行计算库,支持OpenMp的编译器包括Sun Compiler,GNU Compiler和Intel Compiler等,现在只需要在编译的时候添加-fopenmp,就启用了对openmp的支持。 对于实验而言,本文的内容已经足够多了,如果想了解更多,请看最后的Reference里的内容。 更多内容查看并行计算实验系列文章目录 Simple HelloWorld #include <stdio.h> int main...

并行计算实验(三)openMPI简单函数解释

更多内容查看并行计算实验系列文章目录 openMPI简单函数介绍 针对实验用到的几个函数进行说明。 MPI为程序员提供一个并行环境库,程序员通过调用MPI的库程序来达到程序员所要达到的并行目的,可以只使用其中的6个最基本的函数就能编写一个完整的MPI程序去求解很多问题。这6个基本函数,包括启动和结束MPI环境,识别进程以及发送和接收消息: 理论上说,MPI所有的通信功能可以用它的六个基本的调用来实现: MPI_INIT 启动MPI环境 MPI_COMM_SIZE 确定进程数 MPI_COMM_R...