【计算机组成原理】P2 计算机系统的层次结构

计算机系统的层次结构

现代计算机的解题过程

首先将用户用高级语言编写的源程序与数据一起送入计算机内,再由计算机将其翻译成机器能识别的机器语言程序(称为目标程序),机器自动运行该机器语言程序,并将计算结果输出。

计算机语言发展历程

早期

早期的计算机中,机器语言是唯一可用的编程方式。那时候的计算机没有现代的高级编程语言、编译器或解释器等工具,程序员只能直接使用二进制代码 0 和 1 来编写程序。高编程难度使得程序员必须非常小心地处理每一个二进制位,以确保程序的正确性和效率。

在计算机的硬件层面,机器语言是最原始的语言形式,因为计算机的 CPU(中央处理单元)可以直接识别和执行这些二进制代码而不需要任何额外的转换。直接执行机器语言的机器称为实际机器 M 1 M_1 M1

总结:实际机器 M 1 M_1 M1:机器语言程序直接在 M 1 M_1 M1 上执行;

20世纪50年代

20世纪50年代,由于直接使用二进制代码极容易出错,且难以理解和维护,汇编语言应运而生。

汇编语言使用助记符(如ADD、SUB、MUL、DIV等)来代表机器指令,这些助记符相对于二进制代码更加直观,便于记忆和理解。通过汇编语言,程序员可以用更加符号化的方式来编写程序,这不仅提高了编程的效率,也减少了编程错误。

但是汇编语言仍然存在局限性,抽象程度低,程序员仍需要对计算机的硬件结构有深入的理解才能编写高效的汇编语言程序,且从本质上看,汇编语言仍是一种面向实际机器的语言。

总结:虚拟机器 M 2 M_2 M2:将汇编语言程序先翻译成机器语言程序,再在实际机器 M 1 M_1 M1 上执行;

20世纪60年代

20世纪60年代出现了多种面向问题的编程语言。这些语言相对于早期的机器语言和汇编语言来说,具有更高的抽象层次,对问题的描述十分接近人们的习惯,使得程序员更加容易地表达复杂的问题和算法。

此刻,程序员已完全不必了解掌握实际机器 M 1 M_1 M1 的架构和指令系统,只需要掌握高级语言的语法语义,就可以直接使用高级语言来编程。

但是当然,机器 M 1 M_1 M1 本身不能识别高级语言,因此在程序进入机器 M 1 M_1 M1 运行前,必须先将高级语言程序翻译成汇编语言程序(或其他中间语言程序),然后再将其翻译成机器语言程序;或者直接从高级语言程序翻译成机器语言程序,再在机器 M 1 M_1 M1 上运行。由此得到具有三层次结构的计算机系统。

总结:虚拟机器 M 3 M_3 M3:将高级语言程序先翻译汇编语言程序,再在 M 2 M_2 M2 M 1 M_1 M1(或直接到 M 1 M_1 M1)上执行;

编译与解释

通常将高级语言程序翻译成机器语言程序的软件称为翻译程序。翻译程序有两种:编译程序与解释程序:

  • 编译程序: 将用户编写的高级语言程序全部一次性翻译成机器语言程序,而后再执行机器语言程序;如 FORTRAN、PASCAL 等语言就是用编译程序来完成翻译的。
  • 解释程序: 将源程序的一条语句翻译成对应于机器语言的一条语句,并且立即执行这条语句。接着翻译源程序的下一条语句,并且立即执行;如此重复直至完成全部翻译任务;如 BASIC 的翻译就有解释程序和编译程序两种。

微程序机器 M 0 M_0 M0

由于软件的发展,实际机器 M 1 M_1 M1 向上延申构成了各种虚拟机器。同理,机器 M 1 M_1 M1 也向下延申而形成了微程序机器 M 0 M_0 M0

每条机器指令(宏观指令)被分解为一组微指令(微观操作)。这些微指令是计算机控制单元中微程序存储器(Microprogram Store)中的最小存储单元,它们定义了执行一条机器指令所需的一系列控制信号。

需要注意的是,微程序设计方法在上世纪60年代和70年代非常流行,但随着计算机技术的发展,许多现代处理器采用了更直接的方法来执行指令,如流水线技术和超标量技术。这些技术可以直接并行执行多个机器指令的操作,从而提高了处理器的性能。然而,微程序控制的思想在某些特定领域仍然有其应用价值,例如在某些嵌入式系统和一些特殊用途的处理器中。

操作系统机器 M 2 M_2 M2

操作系统,如电脑端的 Windows、MacOS,手机端的 Android、iOS;提供了在汇编语言和高级语言的使用和实现过程中所需的某些基本操作,还起到控制和管理计算机系统全部硬件和软件资源的作用,为用户使用计算机系统提供方便的条件。

操作系统是计算机系统的基础,它直接影响计算机的性能、稳定性和用户体验。随着技术的发展,操作系统也在不断进化,加入新的特性和功能,以适应不断变化的需求。


定稿:2024/1/24
版本:第一版
如有任何问题,请留言或私信,感谢!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android:registerForActivityResult

在《Android:FragmentActivity》中我们提到过Fragment中的onActivityResult已经废弃了,推荐使用registerForActivityResult去注册一个ActivityResultContract契约,从而启动一个forResult的Activity来达到目的,所以这里就看看这个流程是如何进行的。 场景:MainActivity中嵌…

Matplotlib Mastery: 从基础到高级的数据可视化指南【第30篇—python:数据可视化】

文章目录 Matplotlib: 强大的数据可视化工具1. 基础1.1 安装Matplotlib1.2 创建第一个简单的图表1.3 图表的基本组件:标题、轴标签、图例 2. 常见图表类型2.1 折线图2.2 散点图2.3 条形图2.4 直方图 3. 图表样式与定制3.1 颜色、线型、标记的定制3.2 背景样式与颜色…

CC工具箱使用指南:【属性映射】

一、简介 在规划工作中,经常会遇到这样一种情况,有一组一一对应的值。 比如用地编码和用地名称,用地编码【0101】和用地名称【水田】是对应的。 当你在用地编码字段输入【0101】时,用地名称值就必须为【水田】。 当我们确定用地…

gin路由篇

1. 基本路由 gin 框架中采用的路由库是基于httprouter做的 import ("net/http""github.com/gin-gonic/gin" )func main() {// 1.创建路由r : gin.Default()// 2.绑定路由规则,执行的函数// gin.Context,封装了request和responser.…

Nacos源码下载与运行

早先在linux环境下搭建过nacos环境 即Centos安装部署nacos实战,本次是从官网上下载源码,本地运行看看,记录过程,方便备查。 第一步、Nacos源码下载 推荐到nacos官网下载 Github地址,本次选择最新版,1.4.7…

查看Pytorch的GPU是否可用

查看Pytorch的GPU是否可用 import torch torch.cuda.is_available()返回为True表示 Pytorch 的 GPU 可用,返回为False表示 Pytorch 的 GPU 不可用。 其余命令: # 查看cuda是否可用 torch.cuda.is_available() # 返回当前设备索引 torch.cuda.current_d…

openssl3.2/test/certs - 019 - ca-nonca trust variants: +serverAuth, +anyEKU

文章目录 openssl3.2/test/certs - 019 - ca-nonca trust variants: serverAuth, anyEKU概述笔记 ca-nonca.pem from exp 016openssl3.2/test/certs - 019 - ca-nonca trust variants: serverAuth, anyEKUEND openssl3.2/test/certs - 019 - ca-nonca trust variants: serverAu…

Kubeadm安装单master多node节点K8S集群

kubeadm安装k8s1.25版本集群步骤 环境说明实验环境规划集群搭建规划 初始化安装k8s集群的实验环境安装虚拟机更新yum源和操作系统配置机器主机名配置主机hosts文件,相互之间通过主机名互相访问配置主机之间无密码登录关闭交换分区swap,提升性能修改机器内…

Excel导出警告:文件格式和拓展名不匹配

原因描述: Content-Type 原因:Content-Type,即内容类型,一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定文件接收方将以什么形式、什么编码读取这个文件,这就是经常…

Qt单选按钮

前言 本篇文章介绍Qt的单选按钮,就是QRadioButton QRadioButton是一个选项按钮,可以打开(选中)或关闭(取消选中)。单选按钮通常向用户提供“众多之一”的选择。 在一组单选按钮中,一次只能选中…

【Linux命令】du 和 df 查看磁盘占用情况

du 和 df 算是一对同门师兄弟,du 侧重在文件夹和文件的磁盘占用方面,而 df 则侧重在文件系统级别的磁盘占用方面。这两个命令都非常的基础,也是每位 Linux 工程师都应该掌握的命令。 1、du 命令: du 是 “disk usage” 的缩写&a…

CommunityToolkit.Mvvm源生成器

引言 MVVM 工具包包含全新的 Roslyn 源生成器,有助于在使用 MVVM 体系结构编写代码时大幅减少样板。这意味着,在编写代码时,MVVM 工具包生成器现在将负责在后台为你生成其他代码。 以前: private string? name;public string?…

QT 实现自动生成小学两位数加减法算式

小学生加减法训练 QT实现–自动生成两位数加减法算式,并输出txt文件 可以copy到word文件,设置适当字体大小和行间距,带回家给娃做做题 void MainWindow::test(int answerMax, int count) {// 创建一个随机数生成器QRandomGenerator *gener…

C程序的内存空间布局(栈、堆、数据区、常量区、代码区)

目录 C程序的内存空间布局动态区栈区堆区 静态区数据区常量区代码区 栈的地址测试堆的测试地址静态区演示 橙色 C程序的内存空间布局 补充:内存地址和内存空间 内存地址是一个编号,通常由16进制表示,它代表一个内存空间。在计算机中存储器的…

c语言小游戏之扫雷

目录 一:游戏设计理念及思路 二:初步规划的游戏界面 三:开始扫雷游戏的实现 注:1.创建三个文件,test.c用来测试整个游戏的运行,game.c用来实现扫雷游戏的主体,game.h用来函数声明和包含头文…

机械设计-哈工大课程学习-螺纹连接

圆柱螺纹主要几何参数螺纹参数 ①外径(大径),与外螺纹牙顶或内螺纹牙底相重合的假想圆柱体直径。螺纹的公称直径即大径。 ②内径(小径),与外螺纹牙底或内螺纹牙顶相重合的假想圆柱体直径。 ③中径&#xff…

SpringBoot3整合MyBatisPlus

文章目录 一、起因二、引入依赖 一、起因 随着SpringBoot3的发布,mybatisplus也在不断更新以适配spirngboot3 。目前仍然处于维护升级阶段,最初2023.08时,官方宣布对SpringBoot3的原生支持,详情看这里。 但是对于较新版本的Spri…

解读顺网算力与AI,破局AIGC落地“最后一公里”

全球知名AI科学家吴恩达和李飞飞在CES 2024上预测,2024年将是AI技术继续深化的一年,将成为下一次数字或工业革命真正的变革性驱动力。吴恩达还预测了2024年AI可能的突破性进展,其中包括边缘AI。吴恩达对边缘AI寄予厚望,他认为在笔…

从理论到实践:Dubbo 的 `<dubbo:service>` 与 `<dubbo:reference>` 全面指南

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 从理论到实践&#xff1a;Dubbo 的 与 全面指南 前言<dubbo:service> 和 <dubbo:reference> 基础配置 <dubbo:service>配置<dubbo:reference>服务提供与消费的最佳实践1. 性…

AI-数学-高中-7-函数单调性

原作者视频&#xff1a;函数】5函数单调性&#xff08;易&#xff09;_哔哩哔哩_bilibili 1.什么是单调性&#xff1a; 2.通过画图判断单调性&#xff1a; 3.分段函数单调性&#xff1a; 4.如何利用定义判断单调性&#xff1a; 5.利用单调性解不等式&#xff1a; 5.1 把函数…