cpu arch之risc, cisc ,von-neumann,harvard ,modified harvard

2024-01-21 19:08

本文主要是介绍cpu arch之risc, cisc ,von-neumann,harvard ,modified harvard,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

risc设计规范
The best way to understand RISC is to treat it as a concept to design processors. Although
initial RISC processors had fewer instructions compared to their CISC counterparts, the
new generation of RISC processors has hundreds of instructions, some of which are as
complex as the CISC instructions. It could be argued that such systems are really hybrids
of CISC and RISC. In any case, there are certain principles that most RISC designs follow.
We identify the important ones in this section.

1.简单的运算
目的是设计简单的能在单周期执行的指令。Note that a cycle is defined as the time required to
fetch two operands from registers, perform an operation, and store the result in a register
2.寄存器到寄存器的操作
A typical CISC instruction set supports register-to-register operations as well as registerto-memory and memory-to-memory operations. The IA-32, for instance, allows registerto-register as well as register-to-memory operations; it does not allow memory-to-memory
operations
risc处理器只允许load和store指令访问ram
3.简单的寻址方式
Simple addressing modes allow fast address computation of operands. Because RISC
processors employ register-to-register instructions, most instructions use register-based
addressing. Only the load and store instructions need a memory-addressing mode.
risc处理器提供很少的寻址方式,一般1-2种,比如mips,powerpc(arm比较特殊,9种)
4.大量的寄存器组
RISC processors use register-to-register operations, therefore we need to have a large
number of registers. A large register set can provide ample opportunities for the com-
piler to optimize their usage. Another advantage with a large register set is that we can
minimize the overhead associated with procedure calls and returns.
arm有15个寄存器r0-r14和pc.但加上各种模式下的寄存器和状态寄存器共计37个。
mips提供32个寄存器
5.固定长度的简单指令格式
RISC designs use fixed-length instructions. Variable-length instructions can cause implementation and execution inefficiencies

cisc起源
As the name suggests, CISC systems use complex instructions. What is a complex
instruction? For example, adding two integers is considered a simple instruction. But, an
instruction that copies an element from one array to another and automatically updates
both array subscripts is considered a complex instruction. RISC systems use only simple
instructions. Furthermore, RISC systems assume that the required operands are in the
processor’s internal registers, not in the main memory. We discuss processor registers in
the next chapter. For now, think of them as scratchpads inside the processor.

CISC设计不采取risc的限制措施。而事实证明,risc 简单的指令和限制,如基于寄存器操作数的特征,不仅
简化了处理器的设计,还使处理器应用性能得以提高(解释一下,现在x86 cisc性能比arm risc强大n倍,但是原文就是这么说的。原文是:It turns out that characteristics like simple instructions and restrictions like register-based operands not only
simplify the processor design but also result in a processor that provides improved application performance)。

为什么早期设计者没有想到RISC处理器设计方式?
Several factors contributed to the popularity of CISC in the 1970s
In those days,
memory was very expensive and small in capacity. For example, even in the mid-1970s,
the price of a small 16 KB memory was about $500. You can imagine the cost of memory
in the 1950s and 1960s
So there was a need to minimize the amount of memory required
to store a program.
An implication of this requirement is that each processor instruction
must do more, leading to complex instruction set designs.


cisc处理器要处理复杂指令,电路复杂,体积大,功耗高。

von-neumann




harvard arch


modified harvard
内部是哈佛,外部是诺依曼,称改进的哈佛结构。

见于arm9,arm11,cortex-a系列,

下面一种也是harvard ,是8051的架构


顺便说一下普通8位单片机比如c51和arm如arm9执行程序的区别,
arm9内部配置有cache,两个,指令和数据。51单片机内部没配置cache。为便于比较执行过程,假设arm9的cache关掉了。
对于arm9,一般会搭配64MB sdram,所以程序可以完全被载入到sdram中。
如果arm9从nand启动,启动之后,需要先把nandflash中的程序(uboot,linux)载入sdram,然后从sdram中取出指令执行之(具体过程是,nand控制器自动先把nand的前4KB代码复制到4kb的ram中,这个ram中的代码负责把nand中其他代码考到sdram,然后从sdram执行)。此时sdram也被划分出来一部分被当做数据存储器,存放临时的变量值。
如果从norflash启动,则cpu从norflash的0地址取代码执行。此时,sdram被当做数据存储器,存放临时的变量值。

对于89c51,片内自带4KB flash和256Bram,单片机启动时,从flash的0地址拿出代码执行之。ram被当做数据存储器,存放临时的变量值。

可见,如果arm9从norflash启动,跟普通的单片机执行原理是一样的。但arm9毕竟速度快,从flash中取数据太慢,拖cpu后腿。所以现在norflash在arm上基本无用武之地了,直接使用nandflash保存代码和使用sdram执行代码(norflash既能保存代码也能执行---由于访问方式和ram一致,所以能直接执行,但是速度慢)。

但是norflash中可以放个其他的调试程序,比如某个好用的boot程序,需要时从norflash启动来调试一些东东也是可以的。

还有一点,关于数据存储器的几个问题:
51的数据存储器中保存的是什么东西?全局变量个局部变量是怎么保存到?和arm有什么区别?
比如8051单片机,其数据存储器是256字节,其中有部分用于保存程序执行期间产生的临时结果。比如保存局部变量的值。全局变量也会在数据存储器中分配一个固定的地址,并且整个程序周期都不会被释放。

而arm9的linux下的应用程序的的代码保存在sdram的代码段,全局变量保存在sdram的
refer to
Guide To RISC Processors - For Programmers And Engineers (2004)

这篇关于cpu arch之risc, cisc ,von-neumann,harvard ,modified harvard的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

Java程序到CPU上执行 的步骤

相信很多的小伙伴在最初学习编程的时候会容易产生一个疑惑❓,那就是编写的Java代码究竟是怎么一步一步到CPU上去执行的呢?CPU又是如何执行的呢?今天跟随小编的脚步去化解开这个疑惑❓。 在学习这个过程之前,我们需要先讲解一些与本内容相关的知识点 指令 指令是指导CPU运行的命令,主要由操作码+被操作数组成。 其中操作码用来表示要做什么动作,被操作数是本条指令要操作的数据,可能是内存地址,也

Arch - 演进中的架构

文章目录 Pre原始分布式时代1. 背景与起源2. 分布式系统的初步探索3. 分布式计算环境(DCE)4. 技术挑战与困境5. 原始分布式时代的失败与教训6. 未来展望 单体时代优势缺陷单体架构与微服务架构的关系总结 SOA时代1. SOA架构及其背景1. 烟囱式架构(Information Silo Architecture)2. [微内核架构](https://www.oreilly.c

RISC-V (十二)系统调用

系统模式:用户态和内核态         当前的代码都是实现在machine模式下。 系统模式的切换         epc寄存器的值存放的是ecall指本身的地址 。 用ecall指令 系统调用的执行流程         mret这条指令会利用status的mpp值恢复到之前的特权级别。  蓝色的线表示涉及到权限切换。  系统调用的传参

win10不用anaconda安装tensorflow-cpu并导入pycharm

记录一下防止忘了 一、前提:已经安装了python3.6.4,想用tensorflow的包 二、在pycharm中File-Settings-Project Interpreter点“+”号导入很慢,所以直接在cmd中使用 pip install -i https://mirrors.aliyun.com/pypi/simple tensorflow-cpu下载好,默认下载的tensorflow

定位cpu占用过高的线程和对应的方法

如何定位cpu占用过高的线程和对应的方法? 主要是通过线程id找到对应的方法。 1 查询某个用户cpu占用最高的进程号 top -u 用户名 2 查询这个进程中占用cpu最高的线程号 top –p 进程号-H    3 查询到进程id后把进程相关的代码打印到jstack文件 jstack -l pid > jstack.txt 4 在jstack文件中通过16进制的线程id搜索到

RISC-V (十)任务同步和锁

并发与同步 并发:指多个控制流同时执行。         多处理器多任务。一般在多处理器架构下内存是共享的。           单处理器多任务,通过调度器,一会调度这个任务,一会调度下个任务。  共享一个处                                理器一个内存。                 单处理器任务+中断: 同步: 是为了保证在并发执行的环境中各个控制流可

Banana Pi BPI-F3 进迭时空RISC-V架构下,AI融合算力及其软件栈实践

RISC-V架构下,AI融合算力及其软件栈实践 面对未来大模型(LLM)、AIGC等智能化浪潮的挑战,进迭时空在RISC-V方向全面布局,通过精心设计的RISC-V DSA架构以及软硬一体的优化策略,将全力为未来打造高效且易用的AI算力解决方案。目前,进迭时空已经取得了显著的进展,成功推出了第一个版本的智算核(带AI融合算力的智算CPU)以及配套的AI软件栈。 软件栈简介 AI算法部署旨

CPU亲和性设置 代码示例 sched_setaffinity sched_getaffinity

视频教程在这: cpu亲和性设置,NCCL,sched_setaffinity sched_getaffinity,CPU_ZERO、SET、ISSET、linux_哔哩哔哩_bilibili 一、CPU亲和性简介 CPU亲和性(CPU Affinity)设置是操作系统中一个重要的性能优化手段,它允许程序或进程被绑定到特定的CPU核心上运行。这样做的好处包括减少缓存未命中、降低线程迁移(co

ubuntu16.04 caffe(github源码cpu)+python3.5+opencv3.4.5安装编译

https://www.cnblogs.com/hanjianjian90/p/10604926.html