1.架构简介

应用的发展对处理器的需求越来越多样化。与通用处理器架构相比,Xtensa架构的特色在于它是可配置可扩展的微处理器架构。通俗地讲,将其与常见的ARM架构相比,Xtensa架构的特色在于可以为不同种类的产品需求“定制化”SOC系统,快速生成专用的处理器。
每种处理器都有其相应的指令集,Xtensa也不例外。Xtensa指令集体系结构(Instruction Set Architecture,ISA)是一种新的后RISC指令集体系结构,面向嵌入式、通信和消费类产品。该ISA旨在提供:
1)高度的可扩展性
2)业界领先的代码密度
3)优化的低功耗实现
4)高性能
5)低成本实施。
Xtensa ISA可以使用多种管道来实现。如图所示,就是一种典型的架构实现方案:(图片来源于Xtensa官方)

2.常用寄存器介绍:

1)PC 寄存器:program counter. 程序计数器(PC)保存下一条要执行的指令的地址。它在执行时由指令更新。非分支指令只是将其长度递增。执行分支指令时,用新值加载它。存在调用和返回指令,在PC和通用寄存器AR[0]之间移动值。循环选项等选项可通过其他有用的方式更改PC。
注:PC的更改和使用总是由硬件联锁的。它们不需要任何同步指令。

2)PS寄存器: Program State Register, 程序状态寄存器。主要用于中断和上下文切换,显示当前程序运行状态。

3)A0~A15寄存器:这些通用地址寄存器被命名为地址寄存器(Address Register,AR),以区别于可添加到指令集的许多不同类型的数据寄存器。尽管AR寄存器也可以用来保存数据,但它们与指令集和执行管道都有关系,因此它们非常适合包含地址和用于计算地址的信息。它们也非常适合于计算分支条件和目标,因此填补了Xtensa指令集中通用寄存器的角色。对AR寄存器文件的读写始终由硬件联锁。它们不需要任何同步指令。
这些寄存器常见的作用是:

寄存器 描述
A0 返回地址
A1 栈指针
A2~A7 参数
A7 被调用方的堆栈帧指针(可选)
A8 静态链接
A15 堆栈帧指针

注:复位后AR寄存器文件的内容未定义。
4)SAR 寄存器: Shifts and the Shift Amount Register,移位和移位量寄存器,取值范围是0~32.

5)EXCCAUSE 寄存器: Exception Cause Register,异常原因寄存器。

6)EXCVADDR 寄存器:Exception Virtual Address Register异常虚拟地址(EXCVADDR)寄存器包含导致最近的获取、加载或存储异常的虚拟字节地址。
处理器复位后,此寄存器未定义。因为EXCVADDR可能会因任何TLB未命中而改变,即使未命中完全由处理器硬件处理,依赖于它而不改变值的代码必须通过仅对指令和数据访问使用静态转换来保证没有TLB未命中。(这个寄存器在出现程序异常时,定位错误很有帮助,比如,若出错时该寄存器为0,则通常代表程序正在操作空指针)

8)循环特殊寄存器 LOOP Special Registers:共三个寄存器,用于控制零开销循环。当PC到达LEND时,它以LBEG代替执行,并递减LCOUNT。当LCOUNT为零时,便不在进入循环。
LBEG 寄存器:Loop begin,循环起始地址。
LEND 寄存器:Loop end,循环结束地址。
LCOUNT 寄存器: Loop count remaining,循环计数寄存器,当循环计数器达到0,循环就不会再发生了。

9)EPC寄存器:Exception Program Counter, (EPC)异常程序计数器(EPC)寄存器,包含指令的虚拟字节地址,在1级中断的情况下,该指令导致执行最近的异常或下一条指令。此指令尚未执行。在修复异常原因或处理并清除中断后,软件可以使用RFE指令在此地址重新启动执行。此寄存器在过程或重置后未定义,其值可能随时更改。

10)DPEC寄存器:Double Exception Program Counter,双异常程序计数器(DEPC)寄存器包含导致最近双异常的指令的虚拟字节地址。

(路漫漫其修远兮,学习硬件知识的道路是艰难滴,希望能和大家一起交流共勉,谢谢点赞或收藏)

Xtensa处理器架构基础-架构简介与常见寄存器相关推荐

  1. IT:后端进阶技术路线图(初级→中级→高级)、后端开发工程师(技术方向分类之后台业务开发/中间件/内核/分布式架构)基础知识简介、技术路线/技术趋势指南(如何选择自己的技术方向)之详细攻略

    IT:后端进阶技术路线图(初级→中级→高级).后端开发工程师(技术方向分类之后台业务开发/中间件/内核/分布式架构)基础知识简介.技术路线/技术趋势指南(如何选择自己的技术方向)之详细攻略 目录 后端 ...

  2. 滴滴技术解读:自动驾驶基础架构如何以终为始,稳定先行?

    目录 1 关于自动驾驶基础架构 2 技术的主要矛盾 2.1 快速迭代与功能安全的矛盾 2.2 更多.更好的传感器与算力平台的矛盾 2.3 硬件性能与车规级安全的矛盾 3 自动驾驶的长远目标 4 自动驾 ...

  3. 滴滴自动驾驶 | 基础架构如何以终为始,稳定先行?

    桔妹导读:滴滴开始做自动驾驶可以追溯到2016年.4年来,整个行业经历过大众的狂欢与围观,也经历过资本的追捧与冷静.由于今天的技术还处于比较早期,自动驾驶作为"还没有被真正做成"的 ...

  4. 爬虫的基础架构及常用的工具介绍

    爬虫的基础架构及常用的工具 写在前面 爬虫和页面解析都是实操性非常强的技能,需要分析待爬取的网站和信息,过程中不乏需要很多尝试和调整. 爬虫的基础架构 基础架构方面主要分为 3 个部分,分别是 URL ...

  5. SpringCloud(1) 架构演进和基础知识简介

    一.传统架构演进到分布式架构 简介:讲解单机应用和分布式应用架构演进基础知识 (画图) 高可用 LVS+keepalive 1.单体应用:开发速度慢.启动时间长.依赖庞大.等等 2.微服务:易开发.理 ...

  6. 六种常见系统架构 —— 基础篇

    六种常见系统架构 -- 基础篇 常见的几种系统架构设计,本文先讲前三个: 1. 单库单应用架构:最简单的,可能大家都见过 2. 内容分发架构:目前用的比较多 3. 读写分离架构:对于大并发的查询.业务 ...

  7. BigData之Hadoop:Hadoop框架(分布式系统基础架构)的简介(两大核心【HDFS存储和MapReduce计算】)、深入理解、下载、案例应用之详细攻略

    BigData之Hadoop:Hadoop框架(分布式系统基础架构)的简介(两大核心[HDFS存储和MapReduce计算]).深入理解.下载.案例应用之详细攻略 目录 Hadoop的简介(分布式系统 ...

  8. 一步步编写操作系统 27 处理器微架构之流水线简介

    了解处理器内部硬件架构,有助于理解软件运行原理,因为这两者本身相辅相成,相互依存.就像枪和狙击手,枪的操作和外形设计都是要根据人体工学,让人不仅操作容易,而且携带也要轻便,做到能随时射出子弹击中目标, ...

  9. 架构思想--基础架构

    最近研究一些架构思想,看看李云华老师的专栏(从0开始学架构),做些笔记有些个人的思考. 一.基础架构 1.1简介 架构设计面临复杂度:高可用,可扩展,低成本,安全,规模. 架构设计主要目的为了解决软件 ...

最新文章

  1. TaskManager
  2. LeetCode Pascal's Triangle
  3. 网站分类前导:获取网站标题和描述及对相关信息进行分词处理
  4. for循环优化_for 循环和while循环区别
  5. MySQL的简单使用
  6. 前端学习(1398):多人管理18项目重定向
  7. fatal: unable to access ‘https://XXXXX‘: : OpenSSL SSL_read: Connection was reset, errno 10054……
  8. spring集成redis cluster
  9. 人脸识别系统 讲解以及环境搭建(Java 附源码)
  10. 鼠标右键转圈圈_Win7系统桌面鼠标右键一直转圈不能用的解决方法
  11. java中最大最小值
  12. linux 获取文件名的后缀名,linux shell 取文件名后缀
  13. 希腊字母读音及科学方面应用
  14. VMware虚拟机中没有VMnet0的解决办法
  15. 我的 sfml 学习笔记
  16. PHP 调用百度翻译api翻译数据
  17. 关于DefaultHttpClient的作用已经被弃之后的新方法
  18. TTTTTTTTTTT 400D Dima and Bacteria 细菌 最短路
  19. Gzip compression
  20. RecyclerView二级列表

热门文章

  1. 【云原生】风云暗涌的时代,DBA们的利刃出鞘了
  2. Java代码审计手册(2)
  3. 【科创人南京行】西祠胡同创始人“响马”刘琥:一生寻找精神绿林,减区块链也许是正确方向...
  4. 联想小新pad和pro的区别
  5. GitLab——提交合并请求
  6. 如何将.crt和.key转换为.jks证书
  7. python字典键值对的添加和遍历
  8. MongoDB数据迁移之迁移工具Kettle
  9. 第八节 Electron主进程和渲染进程之间的通信
  10. yum命令,yum本地源,共享yum源