指令周期

系统结构 学习笔记

北慕城南 提交于 2020-01-16 19:52:12
系统结构: 研究的是 有吧?几位的 组成:研究的是怎么做 存取指令 实现:研究的是 具体做的实现了 计算机的存储程序工作原理和硬件系统    冯·诺依曼结构   计算机系统由硬件系统和软件系统两大部分组成。美藉匈牙利科学家冯·诺依曼结构(John von Neumann)奠定了现代计算机的基本结构,其特点是:   1)使用单一的处理部件来完成计算、存储以及通信的工作。   2)存储单元是定长的线性组织。   3)存储空间的单元是直接寻址的。   4)使用低级机器语言,指令通过操作码来完成简单的操作。   5)对计算进行集中的顺序控制。   6)计算机硬件系统由运算器、存储器、控制器、输入设备、输出设备五大部件组成并规定了它们的基本功能。   7)彩二进制形式表示数据和指令。   8)在执行程序和处理数据时必须将程序和数据道德从外存储器装入主存储器中,然后才能使计算机在工作时能够自动调整地从存储器中取出指令并加以执行。   这就是存储程序概念的基本原理。    计算机指令   计算机根据人们预定的安排,自动地进行数据的快速计算和加工处理。人们预定的安排是通过一连串指令(操作者的命令)来表达的,这个指令序列就称为程序。一个指令规定计算机执行一个基本操作。一个程序规定计算机完成一个完整的任务。一种计算机所能识别的一组不同指令的集合,管为该种计算机的指令集合或指令系统。在微机的指令系统中

中断&异常

五迷三道 提交于 2020-01-16 04:00:33
中断分类      类别 原因 返回行为 例子 广义 中断 异步中断 ( 狭义中断 ) 中断 ( interrupt) 可屏蔽中断 来自 I/O 设备的信号 总是返回到下一条指令 所有的 IRQ 中断 不可屏蔽中断 电源掉电和物理存储器奇偶校验 同步中断 ( 也称异常 ) 陷阱 (trap) 有意的异常 总是返回到下一条指令 系统调用、信号机制 ( 通过软中断实现 ) 故障 (fault) 潜在可恢复的错误 返回到当前指令 缺页异常、除 0 错误、段错误 终止 (abort) 不可恢复的错误 不会返回 硬件错误 注: 80386有两根引脚INTR和NMI接受外部中断请求信号,INTR接受可屏蔽中断请求。在80386中,标志寄存器EFLAGS中的IF标志决定是否屏蔽可屏蔽中断请求。 中断的定义( wikipedia ) 中断 是指由于接收到来自外围硬件(相对于 中央处理器 和 内存 )的 异步 信号或来自 软件 的 同步 信号,而进行相应的硬件/软件处理。硬件中断导致处理器通过 一个上下文切换(context switch)来保存执行状态(以程序计数器和程序状态字等寄存器信息为主);软件中断则通常作为CPU指令集中的一个指令(汇编中的int 指令),以可编程的方式直接指示这种上下文切换,并将处理导向一段中断处理代码。软中断陷入内核,常被用于实现系统调用(int 80等)。

看完这个,你就知道Docker是什么了

倾然丶 夕夏残阳落幕 提交于 2020-01-16 01:56:11
在开始谈docker容器之前,先需要清楚什么是虚拟化,什么是容器 虚拟化 如果要⽤简单的语句来阐述虚拟化技术的话,那么可以这么解释: 虚拟化技术是⼀种将计算机物理资源进⾏抽象、转换为虚拟的计算机资源提供给程序使⽤的技术。 这⾥所指的计算机资源,就包括了 CPU 提供的运算控制资源,硬盘提供的数据存储资源,⽹卡提供的⽹络传输资源等。 为跨平台而生 计算机发展早期,各类计算机平台,计算资源所提供的接口都不一样,调用十分混乱,没有像今天一样有相对统一的标准。由于为兼容不同的平台写各种各样的兼容代码,于是虚拟技术运应而生。虚拟化技术通过本身适配不同平台的硬件,抽象成统一的接口,从而实现程序的跨平台。 将虚拟化技术用于资源管理 在虚拟化技术发展的过程中,人们又发现了虚拟化技术的另外一个用途:资源管理。 因为虚拟化技术本来就是对计算机物理资源的抽象转换成虚拟的计算机资源,这样就很容易在这里对计算机资源进行修改,比如可以告诉程序这台计算机只有4G内存,而无论计算机是有16G还是32G,程序都会按照虚拟机告诉它的4G内存来进行使用。 通过虚拟化技术管理计算机资源的方式,不当能让我们对计算机资源的控制更加灵活,而且还能极大的提交计算机资源的使用率。 看到这可能会有些迷惑,虚拟化技术本身就要耗费部分的计算机资源,怎么还能产生1+1>2的效果? 其实这里指的是计算机的使用率,而非计算机的占用率

ios必须知道的事情

佐手、 提交于 2020-01-15 20:37:30
一、 学前提醒 其实 iOS 开发就是开发 iPhone\iPad 上的软件,而要想开发一款软件,首先要学习程序设计语言 iOS 开发需要学习的主要程序设计语言有: C 语言、 C++ 、 Objective-C ,其中 C++ 、 Objective-C 都是以 C 语言为基础,从 C 语言衍生出来的。因此, C 语言是开发 iOS 软件的基础。 从现在开始,沉下心来学习传说中的 C 语言,学习它的语法 正式学习之前,先提醒一句:学习一门语言的语法是比较枯燥的事,很像是在学习 1+1 等于几,不可能在学习 C 语言语法过程中就能马上做出一些好看的 iPhone 软件界面效果 二、 计算机和软件常识 1. 计算机运行原理 1) 硬件基本组成:硬盘、内存、 CPU 2) 各个部件之间的运作协调(右图) 2. 计算机只能识别 0 和 1 1) 0 和 1 组成的指令 2) 0 和 1 组成的数据 3. 计算机和软件的联系 1) 软件的基本概念:指令的集合 2) 软件的安装运行过程 u 安装在硬盘 u 运行在内存 3) 为什么要开发软件:写出能控制计算机的指令 4. 计算机语言 1) 一门跟计算机打交道的语言 2) 方便写出一连串的指令 三、 计算机语言发展史 1. 机器语言 1) 简介:所有代码里面只有 0 和 1 ,每一条指令称为“机器指令” 2) 优点 u 代码能被计算机直接识别

CPU指令集架构基础学习

你说的曾经没有我的故事 提交于 2020-01-14 23:17:51
在最初接触C/C++的时候,我对程序编译后的指令非常着迷,循序渐进的学习了C/C++语言编译器生成汇编语言的模式。 就像是语言翻译一样,我们需要做到直接阅读x86等汇编代码,并且能够将其还原成原始的C/C++语句,这是学习逆向最有效的方法。 CPU是执行程序机器码的硬件单元,相关概念包括以下几项: **指令码:**是CPU处理的底层命令,典型的底层命令有:将数据在寄存器之间转移,操作内存,计算数值等指令,每一类CPU都有自己的指令集架构,CPU品牌有Intel,AMD,IBM和Cyrix,IDT,VIA威盛,国产龙芯等。 **汇编语言:**为了让程序员少掉头发而创造出来的,是人类可以易于读写。 **CPU寄存器:**每一种CPU都有其固定的通用寄存器(GPR),x86的CPU中有8个GPR,x64里面有16个GPR,ARM中有16个GPR,CPU寄存器就是一种存储单元,他可以无差别存储所有类型的临时变量,如果写一个程序只用到了8个32位变量,CPU自带的寄存器就可以完成任务。 需要一种将高级编程语言转成CPU可以处理的底层机器语言,这种程序就是编译器(Compiler)。 0x01 指令集架构 x86的指令集架构中,opcode(汇编指令对应的机器码)长度是不同的。 ARM属于RISC(精简指令集)架构 CPU,这种指令集在设计之初就力图保持各个opcode长度一致,最初的时候

CPU、内存、硬盘、指令之间的关系

大兔子大兔子 提交于 2020-01-10 06:01:50
  1.计算机的组成原理   现代计算机的原型其实最早是由冯·诺伊曼提出的,计算机由五大部分组成:运算器 、 控制器 、 存储器、输入设备、输出设备。其中控制器和运算器又可以统称为CPU   (1)运算器:又称算术逻辑单元,主要是由算术逻辑部件和寄存器组成。用来进行算术或者逻辑运算等操作。主要由指令寄存器、程序计数器、操作数控制器组成。   (2)控制器:是整个计算机的控制中心,负责控制和协调整个计算机的动作。能产生各种控制信号,使得各个部件能够一起工作。   (3)存储器:存储器是存放计算机信息的一个部件,用来存放指令、数据。存储器又有内存储器(内存)和外存储器(硬盘)这两种。   (4)输入设备:输入设备的作用是将数据信息输入到计算机中。常见的输入设备有:鼠标、键盘等   (5)输出设备:输出设备负责将计算结果信息输出。常见的输出设备有:显示器、打印机等。   2.程序是如何执行的    我们宏观上在计算机上所运行的任何程序,在计算机内部都会转化为各种指令然后执行。执行一条指令需要计算机的各个部件相互协调,共同完成一次操作。程序的本质就是一组指令的集合,它告诉计算机要做哪些事,按什么步骤去做。指令集中包含若干指令,计算机完成一次指令的操作,则称之为一个指令周期。当计算机执行完了指令集,就相当于完成一次程序的执行。程序的执行,基本可以分为以下几个步骤:   (1

CPU高速缓存与内存屏障

你离开我真会死。 提交于 2020-01-10 00:25:35
1. CPU缓存 cpu高速缓存的由来 在CPU的全部取指令周期中(程序计算),至少需要访问一次存储器(也就是我们所说物理内存上的数据) 通常需要多次访问存储器的取操作数或者保存结果,CPU处理计算的速度明显受限于访问存储器的限制 因此解决方案就是利用局部性原理,在CPU与物理内存之间提供一个容量小并且速度快的存储器,称为高速缓存 高速缓存概述 缓存是分“段”(line)的,一个段对应一块存储空间,大小是 32(较早的 ARM、90 年代 /2000 年代早期的 x86 和 PowerPC)、64(较新的 ARM 和 x86)或 128(较新的 Power ISA 机器)字节 高速缓存包含物理内存部分数据副本 cpu读取数据时将会先检查高速缓存中的数据是否存在,存在就返回,不存在就读取物理内存数据 高速缓存和内存 高速缓存分为L1-L3 Cache L1 Cache: 一级缓存是CPU第一层高速缓存,分为指令缓存和数据缓存,一般服务器的CPU的L1缓存容量在32-4096kb,现在的L1 Cache都不能直接与内存直连传输数据 L2 Cache: 由于L1级别高速缓存容量的限制,为了再次提高CPU的运算速度,在CPU外部放置一个高速存储器,即二级缓存 L3 Cache: 现在的L3缓存都是内置的,主要是进一步降低内存延迟,提升处理器运算能力,一般是多核共享一个L3缓存

初步了解CPU

自闭症网瘾萝莉.ら 提交于 2020-01-09 17:02:34
了解CPU By JackKing_defier 首先说明一下,本文内容主要是简单说明CPU的大致原理,所需要的前提知识我会提出,但是由于篇幅我不会再详细讲解需要的其他基础知识。默认学过工科基础课。 一、总述 先从计算机的结构说起,在现代计算机中,CPU是核心,常常被比喻为人的大脑。现在的计算机都为“冯·诺依曼机”, “冯诺依曼机” 的一个显著的特点就是由运算器、存储器、控制器、输入设备和输出设备组成。 CPU是运算器和控制器合起来的统称 ,因为运算器和控制器在逻辑关系和电路结构上联系十分紧密,尤其在大规模集成电路制作工艺出现之后,所以这两个部件就集成在同一芯片上。 了解CPU怎么工作就转化为了解运算器和控制器的作用和功能。 二、CPU的运算 运算器由ALU(算术逻辑单元)和若干通用寄存器组成。 //寄存器需要数字逻辑知识 ALU即为一个芯片,有相应的输入,会给出相应的输出,由逻辑运算功能表可确定不同针脚会有的相应的运算输出。//这里可以类比于数字逻辑中的74LS138芯片,只不过74181给出的是相应输入的运算结果。 在这里我想到,很多同学并没有学习过数字逻辑这门课,简单介绍一下。我们高中物理就学过“与门”、“或门”和“非门”,也就是通过电路可以实现逻辑上的“与”、“或”和“非”运算。同时呢,有一个门叫做“与非门”,也就是A和B先做与运算,再做非运算取反

Vue生命周期与钩子探究

隐身守侯 提交于 2020-01-07 21:17:15
Vue实例从创建到销毁的过程,就是生命周期。详细来说也就是从开始创建、初始化数据、编译模板、挂载Dom、渲染→更新→渲染、卸载等一系列过程。 首先我们来看一下生命周期图: 钩子在组件树中的调用时机 先直接看一个例子: import Vue from 'vue'; Vue.component('Test', { props: { name: String }, template: `<div class="test">{{ name }}</div>`, beforeCreate() { console.log('Test beforeCreate'); }, created() { console.log('Test created'); }, mounted() { console.log('Test mounted'); }, beforeDestroy() { console.log('Test beforeDestroy'); }, destroyed() { console.log('Test destroyed'); }, beforeUpdate() { console.log('Test beforeUpdate'); }, updated() { console.log('Test updated'); } }); Vue.component('Test1', {

volatile底层原理

独自空忆成欢 提交于 2020-01-07 17:41:37
前言 我们知道volatile关键字的作用是保证变量在多线程之间的可见性,它是java.util.concurrent包的核心,没有volatile就没有这么多的并发类给我们使用。 本文详细解读一下volatile关键字如何保证变量在多线程之间的可见性,在此之前,有必要讲解一下CPU缓存的相关知识,掌握这部分知识一定会让我们更好地理解volatile的原理,从而更好、更正确地地使用volatile关键字。 CPU缓存 CPU缓存的出现主要是为了解决CPU运算速度与内存读写速度不匹配的矛盾 ,因为CPU运算速度要比内存读写速度快得多,举个例子: 一次主内存的访问通常在几十到几百个时钟周期 一次L1高速缓存的读写只需要1~2个时钟周期 一次L2高速缓存的读写也只需要数十个时钟周期 这种访问速度的显著差异,导致CPU可能会花费很长时间等待数据到来或把数据写入内存。 基于此,现在CPU大多数情况下读写都不会直接访问内存(CPU都没有连接到内存的管脚),取而代之的是CPU缓存,CPU缓存是位于CPU与内存之间的临时存储器,它的容量比内存小得多但是交换速度却比内存快得多。而缓存中的数据是内存中的一小部分数据,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可先从缓存中读取,从而加快读取速度。 按照读取顺序与CPU结合的紧密程度,CPU缓存可分为: 一级缓存:简称L1