计算机组成原理1

文章目录

  • 计算机组成原理图
    • 要学的内容
  • 总的来说学习计算机组成原理是学什么?
  • 计算机的基本硬件组成
    • CPU
    • 内存
    • 主板
    • 其他部件
  • 冯·诺依曼体系结构(Von Neumann architecture)

大家好我是jiantaoyab,这是我作为学习的笔记,在这里分享给大家,还有一些书籍<深入理解计算机系统>,《计算机组成:结构化方法》《计算机体系结构:量化研究方法》

计算机组成原理图

在这里插入图片描述

在这张图里面,我们把整个计算机组成原理的知识点拆分成了四大部分,分别是计算机的基本组成、计算机的指令和计算、处理器设计,以及存储器和 I/O 设备。

要学的内容

  • 计算机的基本组成

运算器、控制器、存储器、输入设备和输出设备这五大基本组件。除此之外,计算机的两个核心指标,性能和功耗。性能和功耗也是我们在应用和设计五大基本组件中需要重点考虑的因素。

  • 计算机的指令和计算

搞明白我们每天写的c++代码怎么在计算机中跑起来的,了解我们的程序是怎么通过编译器和汇编器,变成一条条机器指令这样的编译过程还需要知道我们的操作系统是怎么链接、装载、执行这些程序的而这一条条指令执行的控制过程,就是由计算机五大组件之一的控制器来控制的

计算机的计算部分,你要从二进制和编码开始,理解我们的数据在计算机里的表示,以及我们是怎么从数字电路层面,实现加法、乘法这些基本的运算功能的。实现这些运算功能的 ALU(Arithmetic Logic Unit/ALU),也就是算术逻辑单元,其实就是我们计算机五大组件之一的运算器

  • CPU设计

CPU 时钟可以用来构造寄存器和内存的锁存器和触发器,寄存器和内存是用什么样的硬件组成,数据通路,其实就是连接了整个运算器和控制器,并最终组成了 CPU。而出于对于性能和功耗的考虑,你要进一步理解和掌握面向流水线设计的 CPU、数据和控制冒险,以及分支预测的相关技术

CPU 作为控制器要和输入输出设备通信,那么我们就要知道异常和中断发生的机制

  • 存储器的原理

掌握从上到下的 CPU 高速缓存、内存、SSD 硬盘和机械硬盘的工作原理,它们之间的性能差异,以及实际应用中利用这些设备会遇到的挑战,CPU 和这些存储器之间是如何进行通信的,

总的来说学习计算机组成原理是学什么?

学习控制器、运算器的工作原理,也就是 CPU 是怎么工作的,以及为何这样设计;学习内存的工作原理,从最基本的电路,到上层抽象给到 CPU 乃至应用程序的接口是怎样的;学习 CPU 是怎么和输入设备、输出设备打交道的。

学习组成原理,就是在理解从控制器、运算器、存储器、输入设备以及输出设备,从电路这样的硬件,到最终开放给软件的接口,是怎么运作的,为什么要设计成这样,以及在软件开发层面怎么尽可能用好它

计算机的基本硬件组成

要自己组装一台计算机,要先有三大件: CPU,内存,主板

CPU

一个精细的印刷电路板

在这里插入图片描述

CPU,它是计算机最重要的核心配件,全名叫中央处理器(Central Processing Unit)

内存

在这里插入图片描述

存放在内存里的程序和数据,需要被 CPU 读取,CPU 计算完之后,还要把数据写回到内存,然而 CPU 不能直接插到内存上,所以需要主板

主板

在这里插入图片描述

主板是一个有着各种各样,有时候多达数十乃至上百个插槽的配件。我们的 CPU 要插在主板上,内存也要插在主板上.主板的芯片组(Chipset)和总线(Bus)解决了 CPU 和内存之间如何通信的问题.芯片组控制了数据传输的流转,也就是数据从哪里到哪里的问题。总线则是实际数据传输的高速公路.因此,总线速度(Bus Speed)决定了数据能传输得多快。

其他部件

有了三大件,只要配上电源供电,计算机就能跑了,但是现在还缺少各类输入(Input)/ 输出(Output)设备,也就是我们常说的I/O 设备

有显示器我们才能看到计算机输出的各种图像,文字,这也就是所谓的输出设备,同样的,鼠标和键盘也都是必不可少的配件,它们也就是所谓的输入设备

计算机没有硬盘也可以吗?

很多网吧的计算机就没有硬盘,而是直接通过局域网,读写远程网络硬盘里面的数据,我们日常用的各类云服务器,只要让计算机能通过网络,SSH 远程登陆访问就好

显卡

显卡(Graphics Card),现在,使用图形界面操作系统的计算机,无论是 Windows、Mac OS 还是 Linux,显卡都是必不可少的。有人可能要说了,我装机的时候没有买显卡,计算机一样可以正常跑起来啊!那是因为,现在的主板都带了内置的显卡。如果你用计算机玩游戏,做图形渲染或者跑深度学习应用,你多半就需要买一张单独的显卡,插在主板上。显卡之所以特殊,是因为显卡里有除了 CPU 之外的另一个“处理器”,也就是GPU(Graphics Processing Unit,图形处理器),GPU 一样可以做各种“计算”的工作,超算的进步也是加入CPU,不仅仅像传统一样只用CPU运算

鼠标,键盘以及硬盘,这些都是插在主板上的,作为外部 I/O 设备,它们是通过主板上的南桥(SouthBridge)芯片组,来控制和 CPU 之间的通信的,“南桥”芯片的名字很直观,一方面,它在主板上的位置,通常在主板的“南面”,另一方面,它的作用就是作为“桥”,来连接鼠标,键盘以及硬盘这些外部设备和 CPU 之间的通信。

有了南桥,自然对应着也有“北桥”,是的,以前的主板上通常也有“北桥”芯片,用来作为“桥”,连接 CPU 和内存,显卡之间的通信,不过,随着时间的变迁,现在的主板上的“北桥”芯片的工作,已经被移到了 CPU 的内部,所以你在主板上,已经看不到北桥芯片了。

冯·诺依曼体系结构(Von Neumann architecture)

上面便是计算机的硬件组成,我们老一点点的手机只有SD卡,并没有内存插槽,CPU插槽这些东西,手机制造商们把CPU、内存、网络通信,乃至摄像头芯片,都封装到一个芯片,然后再嵌入到手机主板上。这种方式叫SoC,也就是 System on a Chip(系统芯片)。

那为什么手机和电脑的硬件组成方式不一样,但是我们运行软件在手机和在电脑上并没有什么差别呢?因为,无论是个人电脑、服务器、智能手机,还是 Raspberry Pi 这样的微型卡片机,都遵循着同一个“计算机”的抽象概念。就是冯·诺依曼体系结构也叫存储程序计算机

不可编程

计算机是由各种门电路组合而成的,然后通过组装出一个固定的电路版,来完成一个特定的计算程序。一旦需要修改功能,就要重新组装电路。这样的话,计算机就是“不可编程”的,因为程序在计算机硬件层面是“写死”的。最常见的就是老式计算器,电路板设好了加减乘除,做不了任何计算逻辑固定之外的事情。

在这里插入图片描述

存储计算机

程序本身是存储在计算机的内存里,可以通过加载不同的程序来解决不同的问题。有“存储程序计算机”,自然也有不能存储程序的计算机。典型的就是早年的“Plugboard”这样的插线板式的计算机。整个计算机就是一个巨大的插线板,通过在板子上不同的插头或者接口的位置插入线路,来实现不同的功能。这样的计算机自然是“可编程”的,但是编写好的程序不能存储下来供下一次加载使用,不得不每次要用到和当前不同的“程序”的时候,重新插板子,重新“编程"

在这里插入图片描述

具体

  • 运算器

算术逻辑单元(Arithmetic Logic Unit,ALU)和处理器寄存器(Processor Register)的处理器单元(Processing Unit),用来完成各种算术和逻辑运算。因为它能够完成各种数据的处理或者计算工作,因此也有人把这个叫作数据通路(Datapath)或者运算器。

  • 控制器

包含指令寄存器(Instruction Reigster)和程序计数器(Program Counter)的控制器单元(Control Unit/CU),用来控制程序的流程,通常就是不同条件下的分支和跳转。在现在的计算机里,上面的算术逻辑单元和这里的控制器单元,共同组成了我们说的 CPU。

  • 存储器

用来存储数据(Data)和指令(Instruction)的内存。以及更大容量的外部存储,在过去,可能是磁带、磁鼓这样的设备,现在通常就是硬盘。

  • 输入和输出设备

所有的计算机程序,也都可以抽象为从输入设备读取输入信息,通过运算器控制器来执行存储在存储器里的程序,最终把结果输出到输出设备中。而我们所有撰写的无论高级还是低级语言的程序,也都是基于这样一个抽象框架来进行运作的。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/417817.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

docker安装es与kibana

docker安装es与kibana docker pull elasticsearch:7.11.2 docker network create esnet docker run --name es2 -p 9200:9200 -p 9300:9300 --network esnet -e "discovery.typesingle-node" -d elasticsearch:7.11.2 docker run -d -p 5601:5601 --network e…

力扣hot100题解(python版22-28题)

22、相交链表 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交**&#xff1a;** 题目数据 保证 整个链式结构中不存在环。 注意&#xff…

Python的报错类型

在编写python代码时&#xff0c;当不当使用时&#xff0c;python会给出错误提示&#xff0c;常见的错误类型有如下几种&#xff1a; 1.TpyeError类型错误 ① 传入的参数数量不对&#xff1a;如调abs()有且仅有1个参数&#xff0c;但给出了两个时&#xff0c;python会给出提示…

14:00进去,14:08就出来了,问的问题太变态。。。

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 刚从小厂出来&#xff0c;没想到在另一家公司我又寄了。 在这家…

【FPS游戏制作】Unity加入角色控制器控制人物的移动

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

解决gogs勾选“使用选定的文件和模板初始化仓库”报错500,gogs邮件发送失败,gogs邮件配置不生效,gogs自定义模板等问题

解决gogs勾选“使用选定的文件和模板初始化仓库”报错500,gogs邮件发送失败,gogs邮件配置不生效,gogs自定义模板等问题 前几天出了教程本地部署gogs&#xff0c;在后期运行时发现两个问题&#xff1a; 第一&#xff1a;邮件明明配置了&#xff0c;后台显示未配置&#xff0c;…

离线安装腾讯x5内核(附安装包下载地址)

背景&#xff1a;由于项目需要在一个定制android设备上播放RTSP流视频&#xff0c;设备自带的浏览器内核不支持RTSP流播放&#xff0c;这就导致我使用webview播放h5网址上的视频的时候&#xff0c;无法正常播放视频。在android手机上都是可以播放的&#xff0c;所以猜测是定制a…

ROS 2基础概念#1:计算图(Compute Graph)| ROS 2学习笔记

在ROS中&#xff0c;计算图&#xff08;ROS Compute Graph&#xff09;是一个核心概念&#xff0c;它描述了ROS节点之间的数据流动和通信方式。它不仅仅是一个通信网络&#xff0c;它也反映了ROS设计哲学的核心——灵活性、模块化和可重用性。通过细致探讨计算图的高级特性和实…

MySQL 逗号分隔查询--find_in_set()函数

业务场景&#xff1a; 在使用MySQL的时候&#xff0c;可能的某个字段存储的是一个英文逗号分割的字符串&#xff08;这里我们不讨论表设计的合理性&#xff09;&#xff0c;如图所示&#xff1a; 我们在查询的时候需要匹配逗号分割中的某个字符串&#xff0c;该怎么查询呢&am…

Linux按键输入实验-创建按键的设备节点

一. 简介 Linux内核针对 GPIO驱动开发,提供了 pinctrl子系统与gpio子系统,方便了 GPIO驱动程序的开发。 本文开始学习如何利用 Linux内核的 pinctrl子系统,与 gpio子系统提供的 API函数,开发按键驱动。 这里主要学习在设备树文件中创建按键的设备节点。 二. Linux按键…

配电房智能辅助监控系统设计

业务背景 工业企业、学校、医院、居民小区等单位有这海量的配电房&#xff0c;这些配电房内的配电设备种类多、运行环境复杂&#xff0c;存在各种各样的安全隐患。目前这些配电房主要依靠人员在场值守或巡检方式进行管理&#xff0c;但单纯的人工运维方式既成本高&#xff0c;…

完美解决git 执行git push origin master指令 报错command not found

问题描述 报错信息为&#xff1a;在提交项目时的操作&#xff1a;找不到命令行 解决方案 &#xff08;1&#xff09;可以通过如下命令进行代码合并【注&#xff1a;pullfetchmerge】 git pull --rebase origin master&#xff08;2&#xff09;再执行语句&#xff1a; git p…

抖音视频评论提取软件|视频数据批量采集工具

抖音视频评论批量下载软件是一款基于C#开发的高效工具&#xff0c;旨在帮助用户快速获取抖音视频评论数据。无论您是市场分析师、社交媒体管理者还是数据研究人员&#xff0c;这款软件都会成为您工作中不可或缺的利器。 软件的关键功能包括&#xff1a; 关键词搜索&#xff1…

90%电商APP已沦落至无人下载,用户主观意愿——是真正实用性价值!

90%电商APP已沦落至无人下载&#xff0c;用户主观意愿——是真正实用性价值&#xff01; 文丨微三云营销总监胡佳东&#xff0c;点击上方“关注”&#xff0c;为你分享市场商业模式电商干货。 - 引言&#xff1a;在互联网发展的大时代下&#xff0c;似乎每个月都有新的APP出现…

浅谈 Linux 网络编程 - Server 端模型、sockaddr、sockaddr_in 结构体

文章目录 前言前置知识Server 端核心模型 【重点】相关函数 【重点】socket 函数bind 函数listen 函数accept 函数close 函数 sockaddr 数据结构 【重点】 前言 本文主要是对 Linux 网络编程中&#xff0c;Server 端的模型、相关函数 以及 sockaddr、sockaddr_in 结构体做介绍…

Unity 使用脚本获取组件,代码生成预制体

代码获取组件 using System; using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine;// 必须要继承 MonoBehaviour 才是一个组件 // 类名必要与文件名一致public class c1 : MonoBehaviour {// 使用 public 初始变量时…

从零开始手写RPC框架(1)

学习java后端也有一段时间了&#xff0c;在网上寻一些教程和github上的开源库&#xff0c;学习从零开始手写一个RPC&#xff0c;学习各位大牛的代码适当修改&#xff0c;并贴上自己的一些见解和注释。 目录 RPC简介RPC和HttpClient的区别和共同点常见RPC框架 RPC框架设计常见序…

线性规划的标准型转换

对于任意给定的线性规划的问题,其实其本身可能是不符合线性规划标准型的需求的,但是如果通过一系列的等价变化的话,是可以将该问题转换为标准型的线性规划问题,例如如下的线性规划问题: 添加图片注释,不超过 140 字(可选) 给定的线性规划问题存在若干方面不满足最小值,…

就业班 2401--2.26 Linux Day5--进程管理一

一、权限扩展 文件权限管理之&#xff1a; 隐藏权限防止root误删除 文件属性添加与查看 [rootlinux-server ~]# touch file1 file2 file3 1.查看文件属性 [rootlinux-server ~]# lsattr file1 file2 file3 ---------------- file1 ---------------- file2 ----------------…

Vivado时序报告之Check_timing详解

目录 一、前言 二、Check_Timing 2.1 含义解释 2.2 工程代码 2.3 时序约束 2.4 Check_timing报告 no clock pulse_width_clock unconstrained_internal_endpoints no_input_delay no_output_delay multiple_clock generated_clocks loops partial_input_delay …