0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

sparc v8架构的异常处理

嵌入式IoT 来源:嵌入式IoT 作者:嵌入式IoT 2020-09-25 15:44 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

sparc v8架构的异常处理

1.前言

2.异常简介

3.异常的使用场合

4.sparc v8异常处理流程

5.总结

1.前言

对于研究芯片处理器架构,是件非常有意思的事情。刚开始的接触时候也是一头雾水,不知所云,看着厚厚的架构手册,不知道从哪里下手。比如《ARMv8-A Architecture reference manual》一共是6666页纯英文文档,如果没真正看过,估计一上来就开始打退堂鼓了。后面接触的芯片的体系架构多了,自然也明白很多东西其实是有一些共性的,虽然架构不同,但是指令集、流水线以及系统运行的模式也能猜测7到8分准确。本文主要介绍一下sparc v8体系架构下的异常处理,同时简单的对比一下armv8体系架构的异常。

2.异常简介

Exception,中文翻译一般是异常,龙芯的手册上翻译为例外。就是系统在运行的过程中发生了异常事件,比如除0溢出、数组越界、文件找不到等。这种错误一般都是可以预测到的,所以芯片设计的时候,也会预留一些陷阱,当在特定的情况下,进入这个陷阱,说明发生了特定的事情。当然在语言处理层面,也会引入异常的这个概念,也就是比如java中,遇到异常可以throw抛弃也能够catch捕获异常。对于芯片架构来说,这种处理过程更加有意思。

在armv8中,会指定一个异常向量表,将这个异常向量表的首地址交给一个寄存器,当异常发生的时候,则会跳转到相应偏移的处理程序中。

system_vectors: .align11 .setVBAR,system_vectors .orgVBAR //ExceptionfromCurrentEL(EL1)withSP_EL0(SPSEL=1) .org(VBAR+0x00+0) Bvector_error//Synchronous .org(VBAR+0x80+0) Bvector_irq//IRQ/vIRQ .org(VBAR+0x100+0) Bvector_fiq//FIQ/vFIQ .org(VBAR+0x180+0) Bvector_error//Error/vError //ExceptionfromCurrentEL(EL1)withSP_ELn .org(VBAR+0x200+0) Bvector_error//Synchronous .org(VBAR+0x280+0) Bvector_irq//IRQ/vIRQ .org(VBAR+0x300+0) Bvector_fiq//FIQ/vFIQ .org(VBAR+0x380+0) Bvector_error //ExceptionfromlowerEL,aarch64 .org(VBAR+0x400+0) Bvector_error .org(VBAR+0x480+0) Bvector_error .org(VBAR+0x500+0) Bvector_error .org(VBAR+0x580+0) Bvector_error //ExceptionfromlowerEL,aarch32 .org(VBAR+0x600+0) Bvector_error .org(VBAR+0x680+0) Bvector_error .org(VBAR+0x700+0) Bvector_error .org(VBAR+0x780+0) Bvector_error .org(VBAR+0x800+0) Bvector_error

在armv8架构中,处理器所处的模式一共有四种,EL0EL1EL2EL3。同一时刻只能处于一种ELx,所以在每个EL层级,异常的处理都会有Synchronous、IRQ、FIQ、Error四种。这也是armv8的特殊之处。

而对于sparc v8架构而言,处理器的模式只有两种,supervisor 和 user mode。只需要设置寄存器即可。相比较而言sparc v8的异常更好理解。就是系统在user模式下权限比较低,可以做不破坏系统状态的事情,比如不能改变系统运行状态,不能修改寄存器值,不能修改PC指针等等。但是在supervisor下就能够做这些事情。

所以这时候问题就来了,两种模式如何切换,这时就需要借助Exception。一般来说,sparc v8的启动入口就是异常向量的入口,所以第一次进来的就是reset异常。当系统处于异常处理程序的时候,这时候的模式为supervisor,可以做很多事情,比如修改pc指针,修改处理器模式等等。最后退出异常处理,进入用户模式进行处理。

在sparc中,预留了一些可以配置的软件中断,使用ta n来触发系统进入特定的陷阱,其中n表示软件中断标号,这些都是设计者为芯片使用者留下的工具。

3.异常的使用场合

说起异常,很多人都觉得这是一个致命的错误,所以避而远之。其实不然,异常使用得当,将会大大提高系统的运行效率。比如在rtos porting的过程中,我们常常需要改变处理器的运行状态,或者利用异常进入到特定的处理函数中,例如system call等等。

异常也提供了安全机制,比如在芯片使用上,我们往往不会赋予我们的执行程序在芯片的最高权限下去使用这个芯片。比如armv8,我们不会去el3上运行一个系统,这样一不小心就会出现不可逆转的错误。一般的rtos或者linux都会选择el1作为系统运行的层级。需要在el3上做的事情比较少,这时候就可以通过异常转换层级,达到我们的目的。在sparc v8上也是这样,一般程序运行在user mode,只有需要的时候,才会切换到supervisor mode。

另外就是系统进入中断的时候,本质上来说,中断其实就是异常的一种,因为异常分为同步和异步,其中异步异常就是中断。在中断里做的事情一般都是比较紧急的事情。

当系统进入trap的时候,就是出现了同步异常的时候,这时候需要告知使用者,当前出现了除零错误地址访问异常等等。这些都是trap必须设置的,如果芯片没有这些保护机制,任程序继续执行下去,那将会造成不可预知的后果。

4.sparc v8异常处理流程

在sparc异常的处理中,默认情况下会在程序执行的入口处设定异常向量表。然后首先通过一个reset的异常进入第一行启动代码。系统运行起来后,会初始化状态寄存器,初始化C语言执行需要的环境,比如清除bss段、设置sp栈指针等等。

然后程序进入C语言执行,其中汇编语言中的ret1会主动将pc值填充,然后跳转。系统运行时,若遇到中断需要处理,则进入中断处理程序。如果系统在user mode下运行,需要修改pc值,那么只能通过trap指令进行,其中sparc v8的ta指令就是进入同步异常,然后去处理supervisor模式才能做的事情。

对于一个rtos来说,线程压栈的时候,会把当前的pc、和一些状态寄存器、通用寄存器的值读出来,保存在当前的线程栈中,也就是一块内存中,接着会将另外的一个线程栈的内容从内存中取出来,然后设置pc值、状态寄存器值、以及通用寄存器值等等,这时在sparc v8上就需要执行ta 3指令了,其中ta n中的n是自己设定的,需要自己实现相关的处理函数,这里只是预留了一个陷阱,至于陷阱怎么处理,那是需要自己来设定的。

5.总结

本文主要介绍了一下异常这部分的处理逻辑,只有在研究芯片体系架构的时候,才会需要非常深刻的了解这一块。使用好异常,将会让程序设计变得更加的合理,也能够非常清晰的了解操作系统的底层运行逻辑。

原文标题:sparc v8架构的异常处理

文章出处:【微信公众号:嵌入式IoT】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SPARC
    +关注

    关注

    0

    文章

    16

    浏览量

    10141

原文标题:sparc v8架构的异常处理

文章出处:【微信号:Embeded_IoT,微信公众号:嵌入式IoT】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    线路保护光纤通道异常处理方法

    通道异常的 常见原因、处理步骤及预防措施 ,帮助运维人员快速定位问题,提升故障处理效率。 广州邮科光纤线路保护系统 一、光纤通道异常的常见表现 当线路保护光纤通道出现
    的头像 发表于 11-17 10:01 393次阅读
    线路保护光纤通道<b class='flag-5'>异常</b><b class='flag-5'>处理</b>方法

    元服务上自检

    数量和排队情况影响,请耐心等待。 通过:表示检测通过,可以提交上。点击“报告”可查看详细的检测报告。 待优化:表示检测未通过。点击“报告”可查看详细的异常信息与日志等。若合法性检测通过、但上
    发表于 10-21 17:18

    基于蜂鸟E203架构的指令集K扩展

    向量操作指令,例如向量加法、向量乘法等。 在蜂鸟E203架构中,可以添加K扩展指令集,以处理大规模的数据集,可以添加以下指令: 1.VADD:向量加法指令,将两个向量相加并存储结果到一个向量寄存器中
    发表于 10-21 09:38

    迅为Hi3403V610开发板海思Cortex-A55架构核心板卡

    迅为电子重磅推出基于海思Hi3403处理器的高性能核心板,采用先进的四核Cortex-A55架构,主频高达1.4GHz,以强劲算力、超凡能效比与卓越的图像处理能力,为千行百业的智能化升级注入核心动力。无论是智能视觉、工业互联,还
    的头像 发表于 09-30 14:18 351次阅读
    迅为Hi3403<b class='flag-5'>V</b>610开发板海思Cortex-A55<b class='flag-5'>架构</b>核心板卡

    Texas Instruments DRA821x Jacinto™ 64位处理器技术解析

    Texas Instruments DRA821x Jacinto™ 64位处理器基于ARM®v8架构,并为带有云连接性的网关系统进行了优化。片上系统 (SoC) 设计通过集成降低了系统级成本
    的头像 发表于 08-28 11:33 746次阅读
    Texas Instruments DRA821x Jacinto™ 64位<b class='flag-5'>处理</b>器技术解析

    德州仪器AM68x Jacinto 8处理器技术解析

    Texas Instruments AM68x 64位Jacinto™ 8 TOPS Vision SoC处理器是一款基于Eval Jacinto 7架构的可扩展处理器。该系列面向智能
    的头像 发表于 08-27 15:08 660次阅读
    德州仪器AM68x Jacinto <b class='flag-5'>8</b><b class='flag-5'>处理</b>器技术解析

    进迭时空 V8 RISC-V 后端优化

    挥着至关重要的作用。自2020年起,中科院软件所PLCT实验室等团队开始为V8引擎开发RISC-V后端,并持续推动V8对RISC-V架构的支
    的头像 发表于 07-31 09:02 781次阅读
    进迭时空 <b class='flag-5'>V8</b> RISC-<b class='flag-5'>V</b> 后端优化

    迅为iTOP-3588S开发板核心板引脚240PIN全部引出8GB内存32GBEMMC存储

    性能强 iTOP-3588S开发板采用瑞芯微RK3588S处理器,是全新一代AloT高端应用芯片,搭载八核64位CPU,四核Cortex-A76和四核Cortex-A55架构主频高达2.4GHZ
    发表于 06-23 11:19

    RISC-V架构CPU的RAS解决方案

    RISC-V架构以追赶者的姿态在多个应用领域与X86架构和ARM架构展开竞争。在服务器应用领域,RISC-V
    的头像 发表于 06-06 17:03 1564次阅读
    RISC-<b class='flag-5'>V</b><b class='flag-5'>架构</b>CPU的RAS解决方案

    HPM5E31IGN单核 32 位 RISC-V 处理

    本和功耗敏感的领域。l 单核32位设计:单核设计简化了硬件复杂度,适合对实时性要求高但多核需求不强的应用场景;32位架构在内存寻址和数据处理能力上满足大多数嵌入式系统的需求。l 低功耗与高集成度:作为
    发表于 05-29 09:23

    iTOP-3588S开发板四核心架构GPU内置GPU可以完全兼容0penGLES1.1、2.0和3.2。

    性能强 iTOP-3588S开发板采用瑞芯微RK3588S处理器,是全新一代AloT高端应用芯片,搭载八核64位CPU,四核Cortex-A76和四核Cortex-A55架构主频高达2.4GHZ
    发表于 05-15 10:36

    iTOP-3588开发板采用瑞芯微RK3588处理器四核心架构GPU内置独立NPU强大的视频编解码

    架构,主频高达2.4GHz。 四核心架构GPU 集成Mali G610 MP4四核GPU、支持OpenGLES 1.1.2.0、 3.2, OpenCL 2.2和Vulkan1.2。带有MMU的特殊2D
    发表于 04-09 16:09

    迅为iTOP-RK3588S开发板/核心板6TOPS的NPU算力视频编解码8K编码+8K解码

    性能强 iTOP-3588S开发板采用瑞芯微RK3588S处理器,是全新一代AloT高端应用芯片,搭载八核64位CPU,四核Cortex-A76和四核Cortex-A55架构主频高达2.4GHZ
    发表于 02-20 14:24

    DeepSeek V3/R1架构解读:探讨其是否具有国运级创新

    DeepSeek的最新模型DeepSeek-V3和DeepSeek-R1都属于MoE(混合专家)架构,并在开源世界产生了较大的影响力。特别是2025 年 1 月开源的DeepSeek-R1,模型性能
    的头像 发表于 02-10 10:15 6815次阅读
    DeepSeek <b class='flag-5'>V</b>3/R1<b class='flag-5'>架构</b>解读:探讨其是否具有国运级创新

    串口通讯异常处理方法 串口设备连接方式

    串口通信异常处理方法 1. 异常检测 在串口通信中,首先需要能够检测到异常情况。异常检测可以通过以下几种方式实现: 硬件检测 :利用串口硬件
    的头像 发表于 12-27 09:53 5473次阅读