计算机组成原理
来源:互联网 发布:康耐视视觉软件下载 编辑:程序博客网 时间:2024/05/29 07:49
分诺依曼结构
一、计算机有五大组成部分
运算器+控制器 (cpu)
存储器(内存) 数据和指令就以二进制形式不加区分的放在这儿
输入,输出设备 (键盘)
工作原理
二、内存的理解:
地址、指令和数据的关系:
都是线性结构
数据和指令是不分的,都在一个内存当中
cpu在运行过程中,比如操作系统运行一个程序,然后将这个程序的初始地址比如main函数,编译完之后,装入到内存,形成一个进程,会有初始地址,CPU定位到这里,然后从这个地址开始,一条一条的往下执行。当然指令中一些是跳转指令,可能出现跳转。
三、指令和流水线
取指 译码 执行
好处:充分利用各部件
存在的问题:怎么确保 查资料
四、速度不匹配问题
计算机核心问题:速度不匹配问题
解决办法:
1、提升硬盘等设备的速度,和CPU匹配
2、让CPU一直工作,干活。
同步操作->异步操作
异步实例: DMA 直接内存访问
单个程序的顺序执行-> 并发(时间片的轮转)
并行可能存在的问题:对共享资源的争用,读写问题,可能 需要加锁,如果处理不好,可能出现死锁。
增加中间层 ,即缓存
两个局部性原理:
时间局部性
如果程序中某条指令一旦执行,则不久之后该条指令可能再次被执行
如果某数据被访问,则不久之后该数据可能再次被访问。
空间局部性
一旦程序访问了某个存储单元,则不久之后,其附近的存储单元也将被访问。
编程语言
静态语言和动态语言
IDEA编译器可以对静态语言做静态检查
动态语言 灵活,编译器无法检查。
语法分析,做成一棵二叉树。
代码生成:就是把一个数学运算变成了汇编语言,之后翻译成机器语言。
迭代 逐个相乘
递归 n!=n*(n-1)!
注意:每一个函数栈帧代表了一个函数调用。函数a调用函数b,则函数a为栈帧1,函数b为栈帧2。
当n很大的时候,栈变得很长,有可能溢出。
改进的方式:尾递归。
每次发生函数调用,都有新的栈帧形成。
尾递归
注意:就是调用自身。
尾递归的优点:
1,也是需要创建栈帧,但是,可以复用同一个栈帧(原因: 只是对自身调用,并且没有其他函数运算)。上一次的计算结果作为参数,传进了当前的栈帧。
- 计算机组成原理.....
- 计算机组成原理参考资料
- 计算机组成原理
- 计算机组成原理学习心得
- 计算机组成原理
- 计算机组成原理---考点
- 计算机组成原理
- 计算机组成原理啊
- 几个问题--计算机组成原理
- 计算机组成原理实验
- 计算机组成原理【1】
- 计算机组成原理---常识
- 计算机组成原理---常识
- 计算机组成原理小结
- 计算机组成原理基本概念
- 计算机组成原理
- 计算机组成原理
- 计算机组成原理
- Lua UserData
- java web目录结构的理解
- Python中super()函数简介及用法分享
- Android Studio快捷键大全
- Android在子线程更新UI方式总结
- 计算机组成原理
- 4059: [Cerc2012]Non-boring sequences
- C语言寻找BUG
- Longest Palindromic Substring(leetcode medium algorithm problem)
- Android开发之OkHttp的使用
- JavaScript函数执行时函数实参赋值和函数内部预解析的顺序
- 第一个文章吧
- 通用缓存框架(JAD-CACHE)使用配置说明书
- 什么是J2EE