计算机组成原理
shendezhuti
本科湖南大学电子科学与技术学士学位 正攻读美国乔治华盛顿大学计算机硕士学位
展开
-
CMU 15-213 Introduction to Computer Systems学习笔记(2) Bits,Bytes,Integer
将信息表示为bitsEverything is bits每个bit是0或1为什么选用bit?这是因为电子的实现容易存储可以比特的元素 抗干扰能力强(比如电路中存在噪声或者其他干扰)因此数字信号比模拟信号更好。用二进制计数的举例解析Byte布尔代数用布尔代数实现位运算用bit表示集合注意&&与&、|与||的区别,...原创 2019-07-18 21:02:10 · 370 阅读 · 0 评论 -
CMU 15-213 Introduction to Computer Systems学习笔记(13) Exceptional Control Flow: Exceptions and Process
Exceptional Control Flow当我们打开计算机,他只是执行一个接一个的指令,直到我们关闭计算机,如果计算机有多个CPU核心,那么每个核心会一次交替执行命令,指令序列称为【控制流】,硬件正在执行的实际指令序列称为【物理控制流】。Altering the Control Flow实际上我们可以改变指令的顺序,比如【分支和跳转】以及【过程调用和返回】我们需要的...原创 2019-09-20 13:36:22 · 206 阅读 · 0 评论 -
CMU15213 Intro to Computer Systems学习笔记(14) Exceptional Control Flow: Signals and Nonlocal Jumps
Shell要先讲信号的话,先要了解一下shell程序的内容,正如上次所提到的一样,我们只有一种方法在Linux下创建进程,那就是使用fork调用Linux Process HierarchyShell Programsshell是以用户身份执行程序的程序Problem with Simple Shell Example简单shell存在一个问题,shell会等待收割...原创 2019-09-22 09:04:59 · 318 阅读 · 0 评论 -
CMU 15-213 Introduction to Computer Systems学习笔记(15)System-Level I/O
Unix I/ODirectory HierarchyRIO (robust I/O) packageBuffered I/O: ImplementationRIO ExampleMetadata, sharing, and redirection文件元数据是指文件中实际包含的数据信息。How the Unix Kernel Represents O...原创 2019-09-24 12:24:52 · 497 阅读 · 0 评论 -
CMU 15-213 Introduction to Computer Systems学习笔记(16) Virtual Memory: Concepts
Virtual Memory: ConceptsAddress spacesA System Using Physical Addressing在使用物理寻址的系统中,以CPU执行一条移动指令为例,生成了一个有效的物理地址,这个地址实际上是主存储器中一个字节的偏移量,如上图,CPU在这里生成的物理地址为4,然后内存从该地址获取其中保存的字,然后将其发送回CPU,实际上,这是非常简单...原创 2019-09-26 04:15:06 · 276 阅读 · 0 评论 -
CMU 15-213 Introduction to Computer Systems学习笔记(17) Virtual Memory:System
这节课是承接上面的一节课,系统的讲了Virtual Memory。。自己听课没有人讨论没有老师解答表示已经晕掉了。。Review Of SymbolsTransaction Lookaside Buffer (TLB)Simple Memory System ExampleSimple Memory System TLB假设CPU执行了一条指令,它产生了一个有...原创 2019-09-28 14:29:33 · 320 阅读 · 0 评论 -
CMU 15-213 Introduction to Computer Systems学习笔记(18) Dynamic Memory Allocation: Basic Concepts
之前学习的虚拟内存机制,以及它如何为系统提供如此多的有功功能,随着这种大型连续字节数组的抽象,现在一旦我们获得了大量的字节,我们必须管理它,我们必须有一些机制来管理和使用这些资源,本周的主题是存储器的分配,以及储存器分配器的工作原理,以及如何使用它们来管理内存中的虚拟系统。Basic conceptsDynamic Memory Allocation 动态内存分配动态储存器分配器的...原创 2019-09-29 08:19:59 · 208 阅读 · 0 评论 -
CMU 15-213 Introduction to Computer Systems学习笔记(19) Dynamic Memory Allocation: Advanced Concepts
这节课主要是学习一些更复杂的技术,研究不同数据结构去存储 free list我们要看implict allocators,因此我们会研究垃圾回收是怎么工作的。老师说一旦你开始了动态的分配存储,事情变坏的会很快。Explicit Free Lists这里说的我们维护的block不是一整块,而是自由分配那些free block,因此我们存储的是forward/back pointer...原创 2019-09-29 23:06:43 · 338 阅读 · 0 评论 -
CMU 15-213 Introduction to Computer Systems学习笔记(20) Concurrent Programming
Iterative Servers上图中,客户端2直到服务端回应才运行,否则一直处理等待状态。你可能会认为此时的客户端连接会被阻断,但是尝试一下会发现,连接是在内核kernel,然后返回,write也是执行后马上返回,直到客户端2调用了read函数 等待服务器的回复。Where Does Second Client Block?Fundamental Flaw of Itera...原创 2019-09-30 04:55:34 · 192 阅读 · 0 评论 -
CMU 15-213 Introduction to Computer Systems学习笔记(21) Synchronization: Basic
实际上,有一类很重要的并发编程,这种并发编程模型叫做【fork】和【join】(分叉和会和),这个模型中,程序有一系列阶段组成,在每个阶段,都有多个工作线程和一个管理线程,程序会创建多个工作线程,然后每个工作线程解决该阶段的某些问题,在程序中,你可以使用某个可以切分成多个部分你的数据结构,然后每个线程更新其该数据结构中的某个块,但出于某种原因,管理线程必须等待所有的工作线程才能进入下一阶段,这里做...原创 2019-09-30 12:25:26 · 236 阅读 · 0 评论 -
CMU 15-213 Introduction to Computer Systems学习笔记(22) Synchronization: Advanced
Reminder: Semaphores信号是非负全局同步变量, 由P和V操作管理,并且P操作将信号量作为参数。Using semaphores to schedule shared resources上一节课是利用信号量来提供互斥,其他方法也可以做到保护共享变量。我们也可以使用信号量以不同的方式协调对共享数据结构的访问(网上看了下说是同步的概念https://blog.csd...原创 2019-10-01 08:18:36 · 135 阅读 · 0 评论 -
CMU 15-213 Introduction to Computer Systems学习笔记(12) Linking
LinkingExample C ProgramStatic LinkingWhy Linkers?那么我们为什么这样做的,为什么允许这种所谓的分离编译,为什么不喜欢一个包含所有代码的大文件。Reason 1: Modularity模块化允许将代码分解成更小的部分 创建共有函数的库,比如Math 库, 标准 C 库Reason 2: Efficiency效率...原创 2019-09-17 03:15:36 · 304 阅读 · 0 评论 -
CMU 15-213 Introduction to Computer Systems学习笔记(11) Cache Memories
Cache memory organization and operationCache Memories处于【寄存器组】附近的缓存的实质是存储主存储器中经常访问的块,幸运的是,因为【局部性原则】,我们请求的大部分数据实际上都会从这个缓存内存中提供,这只需要花费几个【时钟周期】。General Cache Organization (S, E, B)高速缓存管理器完全由硬件进行...原创 2019-09-16 06:35:54 · 422 阅读 · 0 评论 -
CMU 15-213 Introduction to Computer Systems学习笔记(3) Floating Point
前言:这个视频在我第一次看的时候,上课到十几分钟,老师笔算完后,就一直没切slides,搞得上课小伙伴都懵逼了,而且这节课停下来确实有点难,讲到十几分钟就基本听不太懂了,去看了书对应的部分,也是懵懵懂懂,这次是第二次看视频,顺便把一些地方记录下来,希望这次能多看懂一点东西。恩,开头老师用了一个GRE单词,解释浮点数是计算机系统中的arcane area!受伤的心被安慰了一下。Backg...原创 2019-07-19 01:01:24 · 547 阅读 · 0 评论 -
In file included from /usr/include/stdio.h:27:0, from btest.c:16: /usr/include/feat出错的解决办法
今天在做cmu15213的练习,要用 make btest方法检测,但是报了下图中的错误网上查了下 发现是因为使用了-32指令,我的服务器是64位的,无法直接编译执行32位机器指令解决方法如下:在linux命令行输入apt install libc6-dev-i386后续又在make中碰到如下问题解决方法如下:在linux命令行输入sudo apt-get i...原创 2019-07-19 11:27:28 · 10457 阅读 · 1 评论 -
CMU 15-213 Introduction to Computer Systems学习笔记(4) Machine-Level Programming-Basic
这节课老师说不会让我们坐下来写汇编代码(那真的有点痛苦),而是我们会阅读大量代码,这些代码由GCC编译产生!History of Intel processors and architectures 英特尔处理器架构的历史这一部分老师讲的有点琐碎,blog中就不写了!Assembly Basics: Registers, operands, move 汇编基础Assembly Ch...原创 2019-07-23 23:59:30 · 1375 阅读 · 3 评论 -
CMU 15-213 Introduction to Computer Systems学习笔记(5) Machine-Level Programming-Control
Control: Condition codes处理器状态 (x86-64, Partial)图上的CF,ZF,SF,OF就是微机学过的状态位,其中各自代表的意思如下Explicit Setting: Compare 指令注意compare指令是利用减,因此对CF,OF状态位略有不同。compare用于两个数字间比较的操作而下面的test指令只...原创 2019-07-25 00:17:15 · 190 阅读 · 0 评论 -
CMU 15-213 Introduction to Computer Systems学习笔记(6) Machine-Level Programming-Procedures
Mechanisms in ProceduresStack Structurestack只是内存中某个具体的地址,主要功能是用来帮助一些函数的调用,要注意的是图上stack pointer指向最下,每加入一个数据指针向下方向地址是递减的。stack push&pop注意的是stack pop指令我们没有对内存中的数据进行改动,而是移动了pointer指针!Pas...原创 2019-07-25 22:18:29 · 236 阅读 · 0 评论 -
CMU 15-213 Introduction to Computer Systems学习笔记(7) Machine-Level Programming-Data
Arrays注意机器级代码里面是没有数组这一概念的,而是将其视为字节的集合,结构也是如此。然后C编译器的工作就是生成适当的代码来分配该内存,从而当你去引用结构或者数组时给你正确的值Array Allocation一个char数组一个字符是一个字节,双精度或长整数则是8个字节,指针也是八个字节,int是四个字节。Array Access注意c语言中没有边界检查,...原创 2019-07-28 15:40:12 · 399 阅读 · 0 评论 -
CMU 15-213 Introduction to Computer Systems学习笔记(8) Machine-Level Programming-Advanced
Memory Layoutx86-64 Linux Memory Layout在当时的硬件最大只支持47位,这就是00007FFFFFFFFFFF(11个F,7用2进制表示是3个1)出现在这里的原因。2^47近似等于128*10^12,也就是128TB。10^15是PB 10^18是EXB,谷歌当时每天能产生好几PB的数据。10^21是ZB。据估算(当时)如果把全世界一年所有人...原创 2019-08-24 09:02:41 · 248 阅读 · 0 评论 -
CMU 15-213 Introduction to Computer Systems学习笔记(9) Program Optimization
Overview这一章的主题是如何让程序运行的更快,这里的程序的算法已经确定,并且程序能够正确运行。Generally Useful Optimizations可以将重复计算的东西移到循环外面,避免重复的计算Reduction in Strength用简单的操作降低花费大的操作 shift add代替乘除法Share Common Subexpressions...原创 2019-08-23 09:47:12 · 264 阅读 · 0 评论 -
CMU 15-213 Introduction to Computer Systems学习笔记(10) The Memory Hierarchy
这节课讲的主要是存储器层次结构,存储系统是一个非常复杂的设备层次结构这节笔记要探寻存储器的层次结构是怎么构建的,为什么要设计成这样,我们可以体会到多种存储设备之间属性的美妙融合以及程序的属性在这之中起到的作用。我们以一个较高的角度快速的概览存储技术和趋势,不会有很多细节。之后会学习程序所具有的属性,叫做程序的局部性(locality of reference),我们将会看到局部性和存储...原创 2019-09-15 13:35:08 · 510 阅读 · 0 评论 -
CMU 15-213 Introduction to Computer Systems学习笔记(23) Thread-Level Parallelism
TodayExploitng parallel executionemm有缘再看这个扩展部分吧原创 2019-10-01 11:51:36 · 234 阅读 · 0 评论