12 2018 档案

摘要:MIPS的32个寄存器 (saved)子程序寄存器变量:子程序写入时必须保存 其值并在返回前恢复原值 (globe pointer)全局指针;一些运行系统维护这个指针以便 存取static和extern变量(全局变量) (return address)子程序的返回值 MIPS的指令 R型 I型 J型 阅读全文
posted @ 2018-12-24 09:29 Rogn 阅读(12867) 评论(0) 推荐(0) 编辑
摘要:引言 在计算机内存中,通常是以字节(Byte),也就是 8 个位(Bit)为基本存储单元(也有以 16 位为基本存储单元的)。对于跨越多个字节的数据类型(比如 int 长 4 个字节),如何在内存中对这些字节进行排序有两种常见的方法:大端法(Big-endian)和小端法(Little-endian 阅读全文
posted @ 2018-12-23 23:14 Rogn 阅读(2452) 评论(0) 推荐(0) 编辑
摘要:freopen函数 功能 使用不同的文件或模式重新打开流,即重定向。 实现重定向,把预定义的标准流文件定向到由path指定的文件中。(直观感觉/实际操作都像是把文件定向到流,难道是说,对流来说就是重定向,大雾)。 如果指定了新文件名,则该函数首先尝试关闭已与stream(第三个参数)关联的任何文件并 阅读全文
posted @ 2018-12-23 00:36 Rogn 阅读(18035) 评论(0) 推荐(4) 编辑
摘要:引言 随着科技的发展,尤其是在嵌入式领域,高性能、低功耗的处理器成为众多厂商追逐的目标,但是由于技术和工艺的瓶颈,试图在单核处理器上达到这样的目标变得越发困难,于是人们提出了多核处理器的概念。多核处理器的核心思想是一个处理器中包含若干个核(或线程),所有核(或线程)之间共享 IO、Cache、内存等 阅读全文
posted @ 2018-12-22 11:41 Rogn 阅读(1394) 评论(0) 推荐(0) 编辑
摘要:高速缓存的原理 cpu和内存的速度差距越来越大,计算机的性能受到影响,而高速缓存的出现挽救了这一局面。 为什么在cpu和主存直接添加一个容量很小、速度更快的高速缓存能增加计算机的性能呢? 程序的局部性原理 这是一个经验性结论:计算机程序从时间和空间都表现出局部性。 时间局部性(Temporal Lo 阅读全文
posted @ 2018-12-18 17:13 Rogn 阅读(1209) 评论(0) 推荐(0) 编辑
摘要:基本概念 哈希表(hash table):又称散列表,其基本思路是,设要存储的元素个数是n,设置一个长度为m的连续存储单元,以每个元素的关键字作为自变量,通过哈希函数(h(k))把k映射到一个内存单元,并把该元素存在这个内存单元中,把像这样构造的线性表存储结构称为哈希表。 哈希冲突(hash col 阅读全文
posted @ 2018-12-17 22:34 Rogn 阅读(7297) 评论(0) 推荐(0) 编辑
摘要:从一道“数学归纳法”例题说起 题目:当n≥17时,用面值4元和面值7元的邮票可支付任何n元邮资。即对于任意正整数n≥17,存在非负整数a,b,使得4a+7b=n 证明:(归纳法) 设P(n)表示“可以用面值4元和7元的邮票支付n元邮资”,令Q(n)=P(n)^P(n+1)^P(n+2)^P(n+3) 阅读全文
posted @ 2018-12-17 20:22 Rogn 阅读(956) 评论(0) 推荐(0) 编辑
摘要:欧几里得算法 欧几里得算法是欧几里得(Euclid)在《几何原本》中提出的计算最大公因子的算法,被认为是最早的算法,也是人类历史上最优美的算法。 在表述算法之前,先给出算法的理论基础: 定理:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r) 证明: 若d|a且d|b, 阅读全文
posted @ 2018-12-17 18:21 Rogn 阅读(1021) 评论(0) 推荐(0) 编辑
摘要:简介 谢宾斯基三角形(Sierpinski triangle)是一种分形,由波兰数学家谢宾斯基在1915年提出。它是一种自相似集。 几种生成方法 方法一:去掉中心 取一个正方形或其它图形开始,用类似的方法,形状也和谢宾斯基三角形相似,例如: 方法二:Chaos Game 这种方法简单暴力,但又极其优 阅读全文
posted @ 2018-12-16 21:09 Rogn 阅读(4540) 评论(0) 推荐(0) 编辑
摘要:转载自:https://github.com/qinjx/30min_guides/blob/master/shell.md 什么是Shell脚本 示例 看个例子吧: 示例解释 第1行:指定脚本解释器,这里是用/bin/sh做解释器的 第2行:切换到当前用户的home目录 第3行:创建一个目录she 阅读全文
posted @ 2018-12-15 12:20 Rogn 阅读(722) 评论(0) 推荐(0) 编辑
摘要:OpenMP 框架是使用 C、C++ 和 Fortran 进行并发编程的一种强大方法。GNU Compiler Collection (GCC) V4.4.7 支持 OpenMP 3.0 标准,而 GCC 4.9.3 支持 OpenMP 4 标准。包括 VS 在内的其他编译器也支持 OpenMP。你 阅读全文
posted @ 2018-12-14 21:16 Rogn 阅读(6212) 评论(0) 推荐(1) 编辑
摘要:承接前面两篇,这里直接逐一介绍和使用有关OpenMP的指令和函数 Directives 1、for 作用:for指令指定紧随其后的程序的循环的迭代必须由团队并行执行,只是假设已经建立了并行区域,否则它在单个处理器上串行执行。 格式: 可以使用如下子句: 还可以通过Schedule子句(clause) 阅读全文
posted @ 2018-12-13 23:29 Rogn 阅读(4270) 评论(0) 推荐(1) 编辑
摘要:OpenMP API概述 OpenMP由三部分组成: 编译指令(19) 运行时库程序(32) 环境变量(9) 后来的API包含同样的三个组件,只是三者的数量都有所增加。 编译器指令 OpenMP编译器指令用于各种目的: 产生平行区域 在线程之间划分代码块 在线程之间分配循环迭代 序列化代码段 线程之 阅读全文
posted @ 2018-12-13 20:26 Rogn 阅读(10445) 评论(0) 推荐(3) 编辑
摘要:什么是OpenMP Open Multi-Processing的缩写,是一个应用程序接口(API),可用于显式指导多线程、共享内存的并行性。 在项目程序已经完成好的情况下不需要大幅度的修改源代码,只需要加上专用的pragma来指明自己的意图,由此编译器可以自动将程序进行并行化,并在必要之处加入同步互 阅读全文
posted @ 2018-12-12 22:04 Rogn 阅读(47053) 评论(4) 推荐(11) 编辑
摘要:结构体非常的强啊,毕竟与class差一点(蒟蒻的理解),可以定义成员变量、成员函数,也可以被直接赋值、被swap交换。但是不能直接调用sort来进行交换,但自定义比较规则就可以了(这也是不能直接使用的原因) 有以下两种方法: 重载运算符“<” 由前面重载运算符的知识,重载函数可写成成员函数,也可以写 阅读全文
posted @ 2018-12-08 15:33 Rogn 阅读(435) 评论(0) 推荐(0) 编辑
摘要:c++不再需要typedef的方式定义一个struct,而且在struct里除了可以有变量(称为成员变量)之外还可以有函数(成员函数),其用法与C++中支持的class差不多。事实上,在C++中struct和class最主要的区别是默认的访问权限和继承方式不同,而其它方面差异很小。 这里主要讲与算法 阅读全文
posted @ 2018-12-08 14:11 Rogn 阅读(448) 评论(0) 推荐(0) 编辑
摘要:元素的阶 设<G,·>是群,a∈G,a的整数次幂可归纳定义为: 容易证明,∀m,n∈I,am··an = am+n, (am)n = amn. 定义:设<G,·>是群,a∈G,若∀n∈I+,an ≠ e,则称a的阶是无限的;否则称使得an = e的最小整数n为a的阶,此时a的阶也称为a的周期,常用| 阅读全文
posted @ 2018-12-07 23:15 Rogn 阅读(9032) 评论(0) 推荐(0) 编辑
摘要:随机试验与事件 随机试验:为观察随机现象而进行的实验称为随机试验,随机试验应满足以下3个特征: 样本空间:随机事件所有可能的集合组成样本空间,用Ω表示 基本事件:随机试验中的一个可能结果。也称样本点,即样本空间中的一个元素。是最小的划分单元 事件:也称复合事件,包含多个基本事件。是样本空间的子集 事 阅读全文
posted @ 2018-12-05 22:48 Rogn 阅读(2925) 评论(0) 推荐(0) 编辑
摘要:存储层次结构概况 这是我们非常熟悉的冯·诺依曼计算机结构, 那这其中哪些部件和存储功能有关呢? 存储器和外部记录介质肯定具有存储功能,另外还有一个自带存储功能的运算器,为了描述方便,我们把这些部件统称为存储器。那么我们看一下计算机中对存储器有哪些要求 ? 1、首先存储器当中应该保存了将要运行的程序和 阅读全文
posted @ 2018-12-04 22:09 Rogn 阅读(1665) 评论(0) 推荐(0) 编辑
摘要:冒险 流水线技术之所以能提高性能 究其本质是利用了时间上的并行性,那它让原本应该先后执行的指令在时间上一定程度的并行起来,然而这也会带来一些冲突和矛盾,进而可能引发错误。 冒险(Hazard):在流水线中我们希望当前每个时钟周期都有一条指令进入流水线可以执行。但在某些情况下,下一条指令无法按照预期开 阅读全文
posted @ 2018-12-02 15:29 Rogn 阅读(24911) 评论(6) 推荐(7) 编辑
摘要:流水线的基本原理 指令的主要执行步骤 这个是之前设计的单周期寄存器,它已经能正确的执行MIPS指令。 而MIPS的指令可以分成如下5个阶段: 与示意图结合如下: 单周期与流水线的区别 全在这个图里: 实际上,流水线并不会缩短单条指令的执行时间(甚至会增加时间),而是提高指令的吞吐率(单位时间进多少指 阅读全文
posted @ 2018-12-02 00:33 Rogn 阅读(7355) 评论(0) 推荐(0) 编辑
摘要:处理器的设计步骤 具体设计步骤 (一)分析指令系统 MIPS的所有指令是非常多的,我们只实现其简化版,包含如下6种: (二)需求分析 需求分析,需要存放指令地址的32位寄存器(PC),需要存放指令的存储器,可读,数据和指令均为32位(MEM[PC])。还需要一个寄存器堆,用来保存源操作数和目的操作数 阅读全文
posted @ 2018-12-01 17:02 Rogn 阅读(8534) 评论(9) 推荐(2) 编辑