【从零开始学习计算机科学】计算机体系结构(一)计算机体系结构、指令、指令集(ISA)与量化评估

【从零开始学习计算机科学】计算机体系结构(一)计算机体系结构、指令、指令集(ISA)与量化评估

    • 概论
    • 计算机体系结构简介
    • 计算机的分类
    • 并行体系结构
    • 指令集体系结构(ISA)
      • 分类
      • 存储器寻址
        • 寻址模式
        • 操作数大小
        • 指令
        • ISA的编码
        • 程序的优化
    • 计算机体系结构
    • 量化评估
    • 存储器体系结构

概论

计算机体系结构与计算机组成原理之间的联系非常紧密,其研究范畴基本一致,计算机体系结构与计算机组成原理两者是相辅相成的。但是,计算机体系结构更加注重从理论和整体上把握计算机设计的思想,即如何设计一种计算机,而计算机组成原理更加注重如何具体实现一台计算机,其更加偏向于实践层面。

计算机体系结构简介

自第一代通用计算机出现至今,计算机的计算能力已得到大大的提升。在1978到1986年之间,计算机的性能每年平均增长25%,在1986年到2003年,计算机的性能平均增长52%,在2003年至2010年,性能平均增长22%。

计算机性能的提升,受到多方面的影响。但是,其本质上的提升在于其物理设备的制造技术的进步以及体系结构的发展。对于第一代到第四代计算机的划分,就是从其物理基础上划分的,即电子管,晶体管,集成电路。基本上,整个计算机体系中的飞跃式的进步,绝大多数都是由计算机的物理基础和体系结构的发展所造成的。比如,基于硅的集成电路的发展,使得计算机体积越来越小,单位面积的逻辑门电路越来越大。

我们知道,一个计算机程序,可以看作是一组计算机指令组成的集合,程序的执行过程,可以看作是一条条的计算机指令的执行。对于一条指令,其本质上只是一种特殊的二进制串,这种二进制串可以控制物理机器去进行一系列特定的操作。因此,对于计算机体系结构在整个计算机体系中的地位和功能,可以看作是向上提供一组指令集,人们可方便的应用指令集去控制底层物理设备实现相应的功能。计算机体系结构也是处于发展之中的。

旧有的计算机体系结构主要关注于指令集体系结构(ISA)设计,即关于寄存器、内存寻址、寻址模式、指令操作数、可用操作、控制流指令、指令编码。而如今的计算机体系结构更多关注于目标机器的具体要求,设计可在约束因素下实现性能最大化:成本、功耗和可用性。不仅包括ISA,更包含微体系结构、硬件等等与计算机性能存在联系的多个方面。

计算机体系结构的发展,并不仅仅是由自身产生的,其也受到上层应用以及下层物理设备的影响,也就是说,计算机体系结构的发展是受到与计算机存在联系的方方面面所影响的,我们不能只看体系结构的发展,而忽略体系结构为什么这样发展。尽管技术是不断进步的,但是只有当技术发展到一定程定的时候才能引起质变,导致新的体系结构出现,而一个体系结构也要有其技术支持,在技术发展到一定程度之前,这种体系结构是无法实现的。

在计算机的发展历程中,存在着两个重大的变化,第一,高级编程语言的开发,人们越来越少的去直接使用汇编语言去编写计算机程序,人们使用高级编译语言,可以更高效的开发复杂的计算机程序,可以实现更加复杂的算法,比如动态规划,插值法,以及各种AI算法。对于由高级语言编写的程序,一般是由编译器将其编译成汇编语言组成的汇编程序,然后通过汇编器将汇编语言转变为0和1组成的二进制机器指令流。第二,是独立的操作系统的应用。对于操作系统,其可以屏蔽具体的体系结构细节,仅仅向上提供用户友好的接口,方便各种人群快捷,便利的使用计算机。操作系统的应用降低的体积结构商业化应用的风险。

并且,受到计算机物理设备(比如晶体管)的制约,我们现今可以从物理设备得到的性能提升已到达一个瓶颈,因此,由于上层软件和下层硬件的多重影响,人们在20世纪80年代开发出了一种新式的体系结构——精简指令集计算机(RISC)体系结构。对于RISC体系结构,其主要关注于指令级并行(ILP)去实现性能的提升(主要是流水线(pipeline),多发射和缓存的使用)。对于RISC体系结构,可以实现更大的指令级的性能提升。并且,由于微处理器和具体物理设备的发展,越来越多的使用复杂指令集的计算机体系结构逐渐向RISC体系结构发展,比如intel的x86体系结构,其内部的80x86指令可以以很低的消耗转换成RISC指令。在当下,应用广泛的一种RISC体系结构便是ARM。

半导体技术的改进(集成电路逻辑、DRAM、闪存、磁盘),晶体管的缩放(特征尺寸、时钟速度),计算机体系结构的改进,HLL编译器启用,UNIX, RISC 架构共同促进了轻量级计算机的发展和用户友好的编译/解释编程语言的使用。

然而,由于受到最大功耗的限制(散热技术)和指令级并行技术的开发瓶颈的制约,使得ILP的发展缓慢。如今,人们更多的将关注重点转变为数据级并行(DLP)和线程级并行(TLP),以及对于一些应用场景下的请求级并行(RLP)。
对于ILP,其对开发人员是屏蔽的,是隐式实现的,而对于DLP,ILP以及RLP,是显式实现的,需要开发人员的关注。

计算机的分类

由于计算机的应用场景不同,我们可以将计算机分为以下几类,个人移动设备(PMD),桌面计算,服务器,集群仓库级计算机,嵌入式计算机。

对于不同类型的计算机,其关注的主要性能是存在差异的。对于PMD,其主要关注于响应速度和实时性能,即应用程序的一个程序段必须有一个确定的最大执行时间。对于桌面计算,主要关注于性价比,即性能和成本的比例。对于服务器,主要关注于可用性,吞吐量和可扩展性。对于集群仓库级计算机(WSC(仓库级计算机)和超级计算机),主要关注于性价比和功耗,对于超级计算机,还关注于浮点计算能力。对于嵌入式计算机(我们可以按照能否运行第三方软件划分嵌入式和非嵌入式计算机),其主要关注于价格。

不同的应用场景对于计算机的要求也是不同的,因此,要结合具体的应用场景选择最合适的计算机。

并行体系结构

并行是对于提高计算能力的一种有力的手段。并行主要有ILP,DLP,TLP,RLP。以下几章将详细介绍。

对于一个计算机,我们可以按照并行关系将其划分为以下四类,单指令流、单数据流(SISD),此类计算机包含使用ILP的单处理器顺序计算机;单指令流、多数据流(SIMD),此类计算机包含应用DLP技术(向量体系结构,多媒体扩展,GPU等等)的多数据流计算机,;多指令流、单数据流(MISD);多指令流、多数据流(MIMD),此类计算机主要包含使用任务级并行的计算机。这种划分标准仅仅是按照并行关系,因此是一种粗粒度的划分。

指令集体系结构(ISA)

ISA通常包含以下几个部分:寄存器,操作访问,操作数的类型和大小,指令集,寻址模式,指令编码。一个ISA应该设计为与微处理器的硬件实现分离,与具体的应用程序分离。计算机体系结构的重大进步通常与地标性指令集设计相关。

分类

ISA可以看作是软件和硬件的界限,其将编程语言抽象于机器,是高级语言最终通过编译器/解释器的最终可执行的目标。对于计算机体系结构,ISA其重要的一部分。目前,常用的ISA主要有两大类,一是通用寄存器体系结构,其指令存在两个显式操作数,通用寄存器体系结构主要有两种,一种是寄存器-储存器ISA,比如80x86,其指令可以直接访问存储器;另一种是载入-存储ISA,比如MIPS和ARM,其只能通过载入和存储指令访问存储器。二是堆栈体系结构,比如JVM(java虚拟机),堆栈结构采用两个隐藏操作数。三是AC(累加器)架构,比如EDSAC,IAS。AC架构的指令采用1个显示操作数,1个隐藏操作数。

存储器寻址

寻址的过程是通过地址从存储器中获取操作数(数据)的过程。大多数的体系结构的存储器寻址采用字节寻址,但是有些体系结构采用的是对齐的方式,比如ARM和MIPS,而有些则不要求强制对齐。对于一个大小为s的对象,其字节地址为A,若A mod s

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

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

相关文章

Electron使用WebAssembly实现CRC-32 常用标准校验

Electron使用WebAssembly实现CRC-32 常用标准校验 将C/C语言代码,经由WebAssembly编译为库函数,可以在JS语言环境进行调用。这里介绍在Electron工具环境使用WebAssembly调用CRC-32 常用标准格式校验的方式。 CRC-32 常用标准校验函数WebAssembly源文件…

Docker基础篇——Ubuntu下Docker安装

大家好我是木木,在当今快速发展的云计算与云原生时代,容器化技术蓬勃兴起,Docker 作为实现容器化的主流工具之一,为开发者和运维人员带来了极大的便捷 。下面我们一起进行Docker安装。 Docker的官方Ubuntu安装文档,如…

第五课:Express框架与RESTful API设计:技术实践与探索

在使用Node.js进行企业应用开发,常用的开发框架Express,其中的中间件、路由配置与参数解析、RESTful API核心技术尤为重要,本文将深入探讨它们在应用开发中的具体使用方法,最后通过Postman来对开发的接口进行测试。 一、Express中…

mitmproxy配合Wireshark 抓包分析

Mitmproxy 是一款非常强大的 交互式 HTTP 代理 工具,它被广泛应用于 Web 开发、API 调试、安全测试 等领域。与 Wireshark 侧重于被动监听网络流量不同,Mitmproxy 更像一个 主动的中间人,可以拦截、检查、修改和重放 HTTP/HTTPS 流量&#xf…

Varlens(手机上的单反)Ver.1.9.3 高级版.apk

Varlens 是一款专业级手机摄影软件,旨在通过丰富的功能和高自由度参数调节,让手机拍摄效果媲美微单相机。以下是核心功能总结: 一、核心功能 专业拍摄模式 支持手动/自动/程序模式,可调节ISO、快门速度、EV、白平衡等参数27 提供…

Scala 中的访问修饰符

在Scala中,面向对象的权限控制主要通过访问修饰符来实现。Scala提供了以下几种访问修饰符来控制类、对象、成员变量和方法的访问权限: 1. 默认访问权限(无修饰符) 如果没有指定任何访问修饰符,成员默认是public的&…

第十五届蓝桥杯省赛电子类单片机学习过程记录(客观题)

客观试题: 01.典型的BUCK电源电路包含哪些关键器件(ABCD) A. 电容 B. 二极管 C. 电感 D. MOSFET 解析: 典型的 BUCK 电源电路是一种降压型的直流-直流转换电路,它包含以下关键器件: A.电容:电容在电路中起到滤波的作用。输入电容用于平滑输入电压的波动,减少电源噪声对…

Dify使用日常:我是如何按标题级别将word中的内容转存到excel中的

先上效果图 word中的内容 转存到excel之后 实现步骤: 1、在dify中创建一个工作流,如上图 2、在开始节点增加一个支持文件上传的变量 3、添加文档提取器,提取上传的文件中的内容 4、添加大模型节点,将文档提取器提取出来的内容&…

Vue 框架深度解析:源码分析与实现原理详解

文章目录 一、Vue 核心架构设计1.1 整体架构流程图1.2 模块职责划分 二、响应式系统源码解析2.1 核心类关系图2.2 核心源码分析2.2.1 数据劫持实现2.2.2 依赖收集过程 三、虚拟DOM与Diff算法实现3.1 Diff算法流程图3.2 核心Diff源码 四、模板编译全流程剖析4.1 编译流程图4.2 编…

IDEA与Maven使用-学习记录(持续补充...)

1. 下载与安装 以ideaIU-2021.3.1为例,安装步骤: 以管理员身份启动ideaIU-2021.3.1修改安装路径为:D:\Program Files\JetBrains\IntelliJ IDEA 2021.3.1勾选【创建桌面快捷方式】(可选)、【打开文件夹作为项目】&…

认识vue2脚手架

1.认识脚手架结构 使用VSCode将vue项目打开: package.json:包的说明书(包的名字,包的版本,依赖哪些库)。该文件里有webpack的短命令: serve(启动内置服务器) build命令…

SQL经典查询

查询不在表里的数据,一张学生表,一张学生的选课表,要求查出没有选课的学生? select students.student_name from students left join course_selection on students.student_idcourse_selection.student_id where course_selecti…

《机器学习数学基础》补充资料:过渡矩阵和坐标变换推导

尽管《机器学习数学基础》这本书,耗费了比较长的时间和精力,怎奈学识有限,错误难免。因此,除了在专门的网页( 勘误和修订 )中发布勘误和修订内容之外,对于重大错误,我还会以专题的形…

解锁DeepSpeek-R1大模型微调:从训练到部署,打造定制化AI会话系统

目录 1. 前言 2.大模型微调概念简述 2.1. 按学习范式分类 2.2. 按参数更新范围分类 2.3. 大模型微调框架简介 3. DeepSpeek R1大模型微调实战 3.1.LLaMA-Factory基础环境安装 3.1大模型下载 3.2. 大模型训练 3.3. 大模型部署 3.4. 微调大模型融合基于SpirngBootVue2…

第七课:Python反爬攻防战:Headers/IP代理与验证码

在爬虫开发过程中,反爬虫机制成为了我们必须面对的挑战。本文将深入探讨Python爬虫中常见的反爬机制,并详细解析如何通过随机User-Agent生成、代理IP池搭建以及验证码识别来应对这些反爬策略。文章将包含完整的示例代码,帮助读者更好地理解和…

Vue3——Fragment

文章目录 一、Fragment的核心意义1. 解决Vue2的单根限制问题2. 减少不必要的 DOM 嵌套3. 语义化和结构化 二、Fragment 的实现原理三、Fragment 使用方式1. 基本用法2. 结合条件渲染3. 动态组件 四、实际应用场景1. 列表/表格组件2. 布局组件3. 语义化标签 五、注意事项1. 属性…

字节跳动C++客户端开发实习生内推-抖音基础技术

智能手机爱好者和使用者,追求良好的用户体验; 具有良好的编程习惯,代码结构清晰,命名规范; 熟练掌握数据结构与算法、计算机网络、操作系统、编译原理等课程; 熟练掌握C/C/OC/Swift一种或多种语言&#xff…

【Linux学习笔记】Linux基本指令分析和权限的概念

【Linux学习笔记】Linux基本指令分析和权限的概念 🔥个人主页:大白的编程日记 🔥专栏:Linux学习笔记 文章目录 【Linux学习笔记】Linux基本指令分析和权限的概念前言一. 指令的分析1.1 alias 指令1.2 grep 指令1.3 zip/unzip 指…

数据库索引的作用:提升数据检索效率的关键

在数据库管理系统中,数据如同浩瀚海洋中的宝藏,如何快速准确地找到所需信息,成为了一个关键问题。这时候,数据库索引就如同一张精确的航海图,指引着我们高效地定位数据。那么,数据库索引究竟是什么&#xf…

Lab18_ SQL injection with filter bypass via XML encoding

文章目录 前言:进入实验室构造 payload 前言: 实验室标题为: 通关 XML 编码绕过过滤器的 SQL 注入 简介: 此实验室的库存检查功能中存在 SQL 注入漏洞。查询结果在应用程序的响应中返回,因此您可以使用 UNION 攻击…