【问题思考总结】只有load和store指令能够访存有什么好处?为什么能方便实现指令流水线?【CISC与RISC的区别】【2011 408真题T18 III】

本文主要是介绍【问题思考总结】只有load和store指令能够访存有什么好处?为什么能方便实现指令流水线?【CISC与RISC的区别】【2011 408真题T18 III】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题

今天在搜寻这个问题的时候,发现鲜有人关注和回答,因此,在搜寻了一些外网的回答和资料后,通过思考,总结了一些个人的愚见,恳请各位指正。

思考

CISC与RISC的区别之我见

首先,这两种架构的指令格式有所不同,一个是定长,一个是不定长,CISC是不定长,RISC是定长,这就导致了CISC有可能有的指令执行时间很长,有的指令执行时间很短,这也就导致了CISC基本不可能实现指令流水线、

此外,RISC有很多寄存器,而CISC有较少的寄存器。在早些时候,CPU的时钟频率较低,导致访存指令可以在一个时钟周期内完成。然而,随着CPU性能的发展,CPU时钟频率越来越高,使得需要引入Cache来平衡主存和CPU之间的速度矛盾。而这也导致了现在访存开销很大。为了提高效率,于是RISC采用了更多的寄存器,并可以使指令执行的更迅速(这里我有个疑问,那为什么CISC也不采用更多的寄存器呢?)(天,但是访存时间没变流水段怎么加速?)

最后,RISC只能通过LOAD和STORE指令进行访存,而CISC则不然(我做个简单的瞎联想,CISC的寄存器要比RISC少,而指令复杂性又比RISC高,因而自然要用更多的指令进行访存)。这是为什么呢?原因在于,指令流水线的特点

------未完待续------
见笑了。。。过两天考研了,这个感觉挖到这再挖下去有点不值了,突然碰到bug,以后有缘再挖。

贴两个链接:
[1]https://www.quora.com/Why-do-most-RISC-systems-implement-load-store-architecture
[2]https://www.quora.com/How-do-I-write-a-code-for-both-RISC-and-CISC-to-perform-the-adding-or-multiplication-of-two-values

这篇关于【问题思考总结】只有load和store指令能够访存有什么好处?为什么能方便实现指令流水线?【CISC与RISC的区别】【2011 408真题T18 III】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

mybatis执行insert返回id实现详解

《mybatis执行insert返回id实现详解》MyBatis插入操作默认返回受影响行数,需通过useGeneratedKeys+keyProperty或selectKey获取主键ID,确保主键为自... 目录 两种方式获取自增 ID:1. ​​useGeneratedKeys+keyProperty(推

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Linux在线解压jar包的实现方式

《Linux在线解压jar包的实现方式》:本文主要介绍Linux在线解压jar包的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux在线解压jar包解压 jar包的步骤总结Linux在线解压jar包在 Centos 中解压 jar 包可以使用 u

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

c++ 类成员变量默认初始值的实现

《c++类成员变量默认初始值的实现》本文主要介绍了c++类成员变量默认初始值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录C++类成员变量初始化c++类的变量的初始化在C++中,如果使用类成员变量时未给定其初始值,那么它将被

Javaee多线程之进程和线程之间的区别和联系(最新整理)

《Javaee多线程之进程和线程之间的区别和联系(最新整理)》进程是资源分配单位,线程是调度执行单位,共享资源更高效,创建线程五种方式:继承Thread、Runnable接口、匿名类、lambda,r... 目录进程和线程进程线程进程和线程的区别创建线程的五种写法继承Thread,重写run实现Runnab

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

C++中NULL与nullptr的区别小结

《C++中NULL与nullptr的区别小结》本文介绍了C++编程中NULL与nullptr的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编... 目录C++98空值——NULLC++11空值——nullptr区别对比示例 C++98空值——NUL