计算机组成原理

    xiaoxiao2021-03-25  56

    

    分诺依曼结构 一、计算机有五大组成部分    运算器+控制器  (cpu)    存储器(内存)   数据和指令就以二进制形式不加区分的放在这儿           输入,输出设备   (键盘)

    工作原理

    二、内存的理解: 地址、指令和数据的关系: 都是线性结构  数据和指令是不分的,都在一个内存当中

    cpu在运行过程中,比如操作系统运行一个程序,然后将这个程序的初始地址比如main函数,编译完之后,装入到内存,形成一个进程,会有初始地址,CPU定位到这里,然后从这个地址开始,一条一条的往下执行。当然指令中一些是跳转指令,可能出现跳转。

    三、指令和流水线 取指   译码  执行 好处:充分利用各部件 存在的问题:怎么确保  查资料

    四、速度不匹配问题 计算机核心问题:速度不匹配问题 解决办法: 1、提升硬盘等设备的速度,和CPU匹配 2、让CPU一直工作,干活。 同步操作->异步操作 异步实例: DMA 直接内存访问 单个程序的顺序执行-> 并发(时间片的轮转) 并行可能存在的问题:对共享资源的争用,读写问题,可能 需要加锁,如果处理不好,可能出现死锁。 增加中间层 ,即缓存 两个局部性原理: 时间局部性 如果程序中某条指令一旦执行,则不久之后该条指令可能再次被执行 如果某数据被访问,则不久之后该数据可能再次被访问。 空间局部性 一旦程序访问了某个存储单元,则不久之后,其附近的存储单元也将被访问。

    编程语言

    静态语言和动态语言

    IDEA编译器可以对静态语言做静态检查 动态语言  灵活,编译器无法检查。

    语法分析,做成一棵二叉树。

    代码生成:就是把一个数学运算变成了汇编语言,之后翻译成机器语言。

    迭代  逐个相乘      递归   n!=n*(n-1)!

    注意:每一个函数栈帧代表了一个函数调用。函数a调用函数b,则函数a为栈帧1,函数b为栈帧2。

    当n很大的时候,栈变得很长,有可能溢出。 改进的方式:尾递归。

    每次发生函数调用,都有新的栈帧形成。

    尾递归

    注意:就是调用自身。

    尾递归的优点: 1,也是需要创建栈帧,但是,可以复用同一个栈帧(原因: 只是对自身调用,并且没有其他函数运算)。上一次的计算结果作为参数,传进了当前的栈帧。

    转载请注明原文地址: https://ju.6miu.com/read-37666.html

    最新回复(0)