第1章:处理器与MIPS

2024-03-12 19:08
文章标签 处理器 mips

本文主要是介绍第1章:处理器与MIPS,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.1 计算机的简单模型

1.1.1 计算机的简单组成模型

  1. 3大部分:处理器(cpu),输入输出(IO),存储器(memory)
    在这里插入图片描述

1.1.2 计算机的简单使用模型

在这里插入图片描述

1.2 架构与指令集

  1. IBM引入指令集架构(ISA)的概念,解决不同处理器之间软件代码不兼容的问题,将不同处理器的硬件信息从硬件系统中抽象出来,软件人员面向ISA编程
  2. 微架构的概念:微架构是ISA的一个实现,比如x86(intel)
  3. 同样的ISA,不同的微架构,会带来不同的性能

1.2.1 CISC与RISC

  1. 根据ISA不同将计算机分为两类:复杂指令集计算机(CISC)和精简指令集计算机(RISC),前者每条指令对应的0、1编码长度不一,后长度固定
  2. 计算机发展早期,采用CISC,其采用变长编码(存储资源昂贵,速度慢),强大灵活指令可以一次性完成很多功能(减少内存访问),但只有20%指令会反复使用
  3. 后期产生了RISC,使处理器不需要浪费太多晶体管做那些复杂又很少使用的指令,指令种类少,寻址种类少,大量使用寄存器,处理器频率得以提升

1.2.2 主要的集中ISA

  1. x86:CISC,1978年8086中首次出现,个人计算机标准平台,最成功的指令集架构,目前绝大多数个人计算机处理器都兼容x86指令集架构
  2. ARM:RISC,低功耗,低成本,主要面向嵌入式应用,智能手机,平板等移动设备
  3. SPARC:RISC,应用于高性能工作站和服务器
  4. POWER:RISC,应用于IBM生产的很多服务器,大型机,小型机与工作站
  5. MIPS:RISC,简单指令+优秀编译器+流水结构,更少晶元面积生产更快处理器,应用于工作站,服务器,十分成功,RISC经典之作,且专利已过期

1.3 MIPS指令集架构的演变

  1. MIPS I : 8MHz,32位,提供加载/存储,计算,跳转,分支,协处理及其他特殊指令
  2. MIPS II: 增加了自陷指令,链接加载指令,条件存储指令,同步指令,,可能分支指令,平方根指令
  3. MIPS III:32位,同时支持64位,主频100MHz,首次加入浮点处理器单元
  4. MIPS IV:增加条件移动指令,预取指令及浮点指令
  5. MIPS V:增加了提高代码生产效率和数据转移效率的指令
  6. MIPS32/64:1998年,第一次包含了被称为协处理器0的cpu控制功能
  7. microMIPS32/64:集成了高性能代码压缩技术

1.4 MIPS32指令集架构简介

1.4.1 数据类型

指令的任务就是对操作数进行运算,操作数有不同的类型和长度

  • 位(b)、字节、半字(16bit)、字、双字(64bit)

1.4.2 寄存器

  • RISC大量使用寄存器,其可在一个时钟周期内完成存取操作,同时简化了寻址方式
  • MIPS32的指令中除了加载/存储指令外,都是使用寄存器或立即数作为操作数
  • MIPS中的寄存器分为两类:通用寄存器(GPR),特殊寄存器
  1. 通用寄存器:
    MIPS32架构定义了32个通用寄存器,各个寄存器使用都遵循一定的约定用法
    在这里插入图片描述
  2. 特殊寄存器:
  • MIPS32中定义了三个特殊寄存器:PC(程序计数器),HI,LO(乘除结果高位寄存器和低位寄存器)

1.4.3 字节次序

大端模式(MSB)和小端模式(LSB)

1.4.4 指令格式

3种格式:
在这里插入图片描述

1.4.5 指令集

上述指令直接采用0、1编码,但是不方便,易出错,于是使用汇编程序。

  1. 逻辑操作指令:8条,与,或,非,异或等
  2. 移位操作指令:6条,逻辑左移、右移 ;算术右移等
  3. 移动操作指令:movn,movz等,用于通用寄存器之间的数据移动
  4. 算术操作指令:21条,加减乘除,乘累加,比较等
  5. 转移指令:14条,条件转移和无条件转移
  6. 加载存储指令:14条,L开头表示加载指令,S开头的表示存储指令
  7. 协处理器访问指令:2条,用于读取协处理器中的某个寄存器的值或者将数据保存到协处理器中某个寄存器
  8. 异常相关指令:14条,12条自陷指令,和系统调用指令,异常返回指令
  9. 其余指令:nop,ssnop,sync,pref

1.4.6 寻址方式

  • 寄存器寻址、立即数寻址、寄存器相对寻址、PC相对寻址

1.4.7 协处理器CP0

MIPS32架构提供最多4个协处理器,分别是CP0(用于系统控制,包括配置CPU工作状态,高速缓存控制,异常控制,存储单元控制等),CP1、CP3(用于浮点处理单元),CP2保留用于特定实现

1.4.8 异常

  • 有些事件会打断处理器运行过程中的取指令、执行指令等正常程序执行流程,如中断、陷阱、系统调用等,统称异常。
  • 异常发生后,处理器会转移到一个事先定义好的地址,在那个地址有异常处理例程在其中进行异常处理,改地址称为异常处理例程的入口地址。

这篇关于第1章:处理器与MIPS的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/802280

相关文章

Spring点滴五:Spring中的后置处理器BeanPostProcessor讲解

https://www.cnblogs.com/sishang/p/6576665.html BeanPostProcessor接口作用:      如果我们想在Spring容器中完成bean实例化、配置以及其他初始化方法前后要添加一些自己逻辑处理。我们需要定义一个或多个BeanPostProcessor接口实现类,然后注册到Spring IoC容器中。   package com.t

【SpringMVC学习05】SpringMVC中的异常处理器

SpringMVC在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑。 异常处理思路 我们知道,系统中异常包括两类:预期异常和运行时异常(RuntimeException),前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。系统的dao、service、controller出现异常都通过throws E

Makefile问答之02 预处理器与宏

GCC Makefile中,怎样设定预处理器名称 在 GCC 的 Makefile 中,预处理器(preprocessor)的名称通常是 cpp(C PreProcessor),但在实际的 Makefile 中,我们一般是通过 gcc 命令来调用预处理器,而不是直接调用 cpp。不过,你可以通过设置 CPP 变量来显式指定预处理器名称和选项。以下是如何在 Makefile 中进行设置和使用的

MT6895(天玑8100)处理器规格参数_MTK联发科平台方案

MT6895平台 采用台积电5nm工艺,与天玑 8000 相比性能提升 20% ,搭载4 个 2.85GHz A78 核心 + 4 个 2.0GHz A55 核心,CPU能效比上一代提高 25% 。GPU 采用了第三代的Valhall Arm Mali-G610 MC6架构,拥有6核心,搭配天玑8100所拥有的HyperEngine5.0带来 5G 和 Wi-F i网络技术升级,包括 AI-VRS

Shell编程:文本处理器(cut、split、paste、eval 命令)

文章目录 文本处理器 2cut 命令-快速裁剪语法格式常用选项示例 split 命令-文件拆分语法格式常用选项示例 paste 命令-文件合并语法格式常用选项示例 eval 命令-变量扫描器工作原理示例 文本处理器 2 本章讲解 grep、sort、uniq、tr、cut、split、paste 命令等。这些文本处理器通常用于数据过滤、转换、清理、格式化和提取等操作,

【ARM体系结构】ARM处理器流水线技术解析

引言 在现代计算机体系结构中,流水线技术是提高处理器性能的关键技术之一。ARM作为移动计算和嵌入式系统领域的领先架构,其流水线设计对于实现高效能、低功耗的处理器至关重要。本文旨在深入探讨ARM体系结构中流水线的概念、原理、分类,并分析影响流水线性能的关键因素,同时详细阐述指令执行过程的典型步骤,为理解和优化ARM处理器性能提供理论基础和实践指导。 流水线的概念与原理 概念 在ARM体系结

ARM——结构体系(处理器工作模式,CPSR,立即数,汇编语言函数调用)

1、处理器工作模式          ARM有7个基本工作模式:User:非特权模式,大部分任务执行在这种模式FIQ:当一个高优先级(fast)中断产生时将会进入这种模式IRQ:当一个低优先级(normal)中断产生时将会进入这种模式Supervisor:当复位或软中断指令执行时将会进入这种模式Abort:当存取异常时将会进入这种模式Undef:当执行未定义指令时会进入这种模式Sy

《ARM Cortex-R 学习指南》-【第十四章】-为 Cortex-R 处理器编写代码

快速链接: . 👉👉👉 ARMv8/ARMv9架构入门到精通-[目录] 👈👈👈 付费专栏-付费课程 【购买须知】 个人博客笔记导读目录(全部) 第十四章 为 Cortex-R 处理器编写代码 你可以针对功耗、速度、代码密度或内存占用来优化代码。许多 GNU GCC 和 ARM 编译器功能利用 Cortex-R 系列设计生成优化代码。 14.1 编译器优化

【论文阅读】一种针对多核神经网络处理器的窃取攻击(2020)

摘要 攻击者可以通过侧信道信息(Side-channel)完成模型窃取攻击[17]. [17] Hua W Z, Zhang Z R, Suh G E. Reverse Engineering Convolutional Neural Networks through Side-channel Information Leaks[C]. 2018 55th ACM/ESDA/IEEE Des

ARM结构和MIPS结构的地址空间

ARM结构和MIPS结构的地址空间 无论在哪种体系结构中,地址空间的访问都是CPU运行的基本,CPU的每一条指令的地址,都必须在CPU所能访问的地址空间内,当然这个空间指的是虚拟地址空间。每个CPU所能访问多大的虚拟地址这是和CPU的位数有关的,32位地址总线,最大的虚拟地址就是2的32次方,64位同理。当然在实际的使用中,是不会出现这么大的地址范围的,我们都会根据设备的地址和内存的范围来配置一