计算机小白必看,速通“计算机科学”,快速入门计算机科学【P9~P12】

发布于:2022-12-26 ⋅ 阅读:(304) ⋅ 点赞:(0)


前言

本文意在从高层次总览一系列计算机话题,帮助“计算机小白”快速入门计算机科学。

相关课程链接如下:(配合课程,使用效果更佳!!)

Youtube 原视频:https://www.youtube.com/playlist?list=PL8dPuuaLjXtNlUrzyH5r6jN9ulI

Bilibili(特别鸣谢CrashCourse字幕组的辛苦付出,你们是真正的共产主义者):https://www.bilibili.com/video/BV1EW411u7th?spm_id_from=333.337.search-card.all.click

(可不可以点个赞呢,支持下博主,爱你哟,顺着评论区回访!!!)
————————————————
版权声明:本文为CSDN博主「小柒柒是混世大魔王」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

九、高级CPU设计

1.概念梳理

缓存:在 CPU 中的小块 RAM,用于存储批量指令。

缓存命中:想要的数据已经在缓存里

缓存未命中:想要的数据不在缓存里

脏位:缓存里每块空间,有个特殊标记,叫脏位,用于检测缓存内的数据是否与 RAM 一致。

多核处理器:一个 CPU 芯片中,有多个独立处理单元。

2.现代 CPU 如何提升性能

早期通过加快晶体管速度,来提升 CPU 速度。但很快该方法到达了极限。
后来给 CPU 设计了专门除法电路+其他电路来做复杂操作:如游戏,视频解码

3.缓存

为了不让 CPU 空等数据,在 CPU 内部设置了一小块内存,称为缓存,
让 RAM 可以一次传输一批数据到 CPU 中。(不加缓存,CPU 没位置放大量数据)

缓存也可以当临时空间,存一些中间值,适合长/复杂的运算。

脏位:储存在缓存中与 RAM 不一致的数据

空等原因:从 RAM 到 CPU 的数据传输有延迟(要通过总线,RAM 还要时间找地址、取数据、配置、输出数据)。

4.缓存同步

缓存同步一般发生在 CPU 缓存已满,但 CPU 仍需往缓存内输入数据。此时,被标记为脏位的数据会优先传输回 RAM,腾出位置以防被覆盖,导致计算结果有误。

5.指令流水线

作用:让取址→解码→执行三个步骤同时进行。并行执行指令,提升CPU性能。
原本需要 3 个时钟周期执行 1 个指令,现在只需要 1 个时钟周期。

设计难点:数据具有依赖性 跳转程序

数据依赖性解决方法:乱序运行、预测分支(高端 CPU)

在这里插入图片描述

6.一次性处理多条指令

在这里插入图片描述

7.同时运行多个指令流(多核 CPU)

多核处理器:一个 CPU 芯片中,有多个独立处理单元。但因为它们整合紧密,可以共享一些资源。

8.超级计算机(多个 CPU)

在一台计算机中,用无数个 CPU,做怪兽级的复杂运算,如模拟宇宙形成。

十、早期的编程方式

1.早期,程序如何进入计算机

程序必须人为地输入计算机。
早期,电脑无内存的概念,人们通过打孔纸卡等物理手段,输入数据(数字),进入计算机。

2.早期计算机的编程

打孔纸卡/纸带:在纸卡上打孔,用读卡器读取连通电路,进行编程。
原因,穿孔纸卡便宜、可靠也易懂。62500 张纸卡=5MB 数据

插线板:通过插拔线路的方式,改变器件之间的连接方式,进行编程。

面板开关(1980s 前):通过拨动面板上的开关,进行编程。输入二进制操作码,按存储按钮,推进至下一个内存位,直至操作完内存,按运行键执行程序。(内存式电脑)

3.现代计算机基础结构——冯诺依曼计算机

冯诺依曼计算机的标志是,一个处理器(有算术逻辑单元)+数据寄存器+指令寄存器+指令地址寄存器+内存

十一、编程语言发展史

1.概念梳理

伪代码:用自然语言(中文、英语等)对程序的高层次描述,称为“伪代码”

汇编器:用于将汇编语言装换成机器语言。一条汇编语句对应一条机器指令。

2.早期二进制写代码

先前都是硬件层面的编程,硬件编程非常麻烦,所以程序员想要一种更通用的编程方法,就是软件。
早期,人们先在纸上写伪代码,用"操作码表"把伪代码转成二进制机器码,翻译完成后,程序可以喂入计算机并运行。

3.汇编器&助记符

背景:1940~1950s,程序员开发出一种新语言, 更可读 更高层次(汇编码)。每个操作码分配一个简单名字,叫"助记符"。但计算机不能读懂“助记符”,因此人们写了二进制程序“汇编器"来帮忙

作用:汇编器读取用"汇编语言"写的程序,然后转成"机器码"。

4.最早高级编程语言“A-0”

汇编只是修饰了一下机器码,一般来说,一条汇编指令对应一条机器指令,所以汇编码和底层硬件的连接很紧密,汇编器仍然强迫程序员思考底层逻辑。

1950s,为释放超算潜力,葛丽丝·霍普博士,设计了一个高级编程语言,叫 “Arithmetic Language Version 0”,一行高级编程语言 可以转成几十条二进制指令。但由于当时人们认为,计算机只能做计算,而不能做程序,A-0 未被广泛使用。

过程:高级编程语言→编译器→汇编码/机器码

5.开始广泛应用的高级编程语言 FORTRAN

1957 年由 IBM1957 年发布,平均来说,FORTRAN 写的程序,比等同的手写汇编代码短 20 倍,FORTRAN 编译器会把代码转成机器码。但它只能运行于一种电脑中。

6.通用编程语言——COBOL

1959 年,研发可以在不同机器上通用编程语言。最后研发出一门高级语言:“普通面向商业语言”,简称 COBOL每个计算架构需要一个 COBOL 编译器,不管是什么电脑都可以运行相同的代码,得到相同结果。

7.现代编程语言:1960s-2000

1960s 起,编程语言设计进入黄金时代。
1960:LGOL, LISP 和 BASIC 等语言
70 年代有:Pascal,C 和 Smalltalk
80 年代有:C++,Objective-C 和 Perl
90 年代有:Python,Ruby 和 Java

8.安全漏洞&补丁由来

在 1940 年代,是用打孔纸带进行的,但程序出现了问题(也就是漏洞),
为了节约时间,只能贴上胶带也就是打补丁来填补空隙,漏洞和补丁因此得名。

十二、编程基础-语句和函数

1.变量、赋值语句

如a=5 ,其中a为可赋值的量,叫做变量。把数字 5 放a里面.这叫"赋值语句",即把一个值赋给一个变量

2.if判断

可以想成是 “如果 X 为真,那么执行 Y,反之,则不执行Y”,if语句就像岔路口,走哪条路取决于条件的真假。

3.while循环

当满足条件时进入循环,进入循环后,当条件不满足时,跳出循环。

4.for循环

for循环不判断条件,判断次数,会循环特定次数,不判断条件。for 的特点是,每次结束, i 会 +1

5.函数

当一个代码很常用的时候,我们把它包装成一个函数(也叫方法或者子程序),其他地方想用这个代码,只需要写函数名即可。

最后

本篇博客为P5~P8部分

后续博主将持续更新,各位看官莫急呀。

欢迎各位大可爱小可爱的点赞评论加关注!!

往期系列内容链接入口

计算机小白必看,速通“计算机科学”,快速入门计算机科学【P1~P4】

计算机小白必看,速通“计算机科学”,快速入门计算机科学【P5~P8】

本文含有隐藏内容,请 开通VIP 后查看