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

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

3天内不再提示

sparc体系架构的窗口寄存器的深入理解

嵌入式IoT 来源:嵌入式IoT 作者:嵌入式IoT 2021-01-07 10:39 次阅读

sparc体系架构的窗口寄存器的深入理解

1.概述

2.窗口寄存器的特性

3.程序的设计

4.sparc设计对于嵌入式编程的优劣

1.概述

sparc这种架构有着特殊的窗口寄存器,使用sparc芯片,一定会对这种窗口寄存器产生疑惑,然而这种硬件特性却让软件设计有着更加独特的方式。下面来描述一下sparc架构中这种串口寄存器的特性以及编程模型。

2394659a-5074-11eb-8b86-12bb97331649.png

采用窗口寄存器,可以减少函数调用过程中返回时间,因为通过硬件进行压栈操作时,可以减少指令条数以及减少访问存储器的次数。

窗口寄存器的本质是每当执行一次函数调用过程时,寄存器窗口会自动的指向下一个窗口,当子程序返回时,也不需要额外的出栈操作,只是将窗口偏移到上个寄存器即可。

而两个相邻的窗口则有重叠部分,可以对两个父子函数之间进行参数传递,这样大大的提高了访问的效率以及寄存器的专一性。

2.窗口寄存器的特性

当在实际的程序中使用时,往往会涉及到多个函数的嵌套,这些在复杂程序设计上非常的普遍,业务逻辑的增加会显著的增加函数调用的深度。如果函数调用超过了这些8个窗口,sparc架构又是该如何处理呢?

在sparc的架构中,CWP(当前窗口指针)是PSR(程序状态寄存器)的一部分,在某一固定的时刻,处理器中都只会有32个整数寄存器可以被使用。这32个寄存器为8个全局寄存器、8个返回结果寄存器、8个局部寄存器、8个输入寄存器。CWP通常会因SAVE指令(SAVE指令一般在过程调用时使用,用来开辟新的栈帧并切换寄存器窗口)而减一,因RESTORE指令(在从过程中返回前切换回调用者的寄存器窗口)而加一,陷阱事件(中断,异常或TRAP指令)和RETT指令(从陷阱中返回)也会改变CWP,不过函数调用比陷阱更为常见。

23bbd74c-5074-11eb-8b86-12bb97331649.png

窗口无效掩码(WIM) WIM指示了哪个窗口是无效的,无效的意思是该窗口保存了调用者的信息所以不可再使用,上图中,WIM指向w7,而CWP指向w0,所以现在如果执行一条SAVE指令,则会触发窗口溢出陷阱,反之,如果CWP指向w0且又执行了一条RESTORE指令,则会触发窗口下溢陷阱。

所谓的窗口下溢则是说当前窗口不够用了,需要将已经满了的窗口寄存器的数据压入到栈上,也就是内存中,压入后的窗口寄存器又可以重新利用起来了,而上个满了的窗口寄存器则存在内存中了。当函数返回到窗口无效寄存器时,则发生上溢陷阱,该陷阱中会执行出栈的操作,从而将寄存器进行恢复。

3.程序的设计

对于C语言来说,并不用关注架构的不同带来的差异性,而对于汇编来说,则设计却是完全的不同。GCC已经处理好了C转换成汇编的逻辑。

23e62858-5074-11eb-8b86-12bb97331649.png

每个save指令都是在被调用的函数的第一条指令处开始执行。而SAVE的指令与ADD的指令相同,其功能是可以将sparcCWP减一。让CWP-1窗口成为新的当前的窗口。

当函数执行完成后,则执行restore指令,让窗口指令加一。窗口就回归原位了。

4.sparc设计对于嵌入式编程的优劣

对于嵌入式来说,如果只设计可控的程序,逻辑设计上尽可能的单一可控,并且最好函数的嵌套深度不应该超过8个,最好不发生上溢或者下溢操作。这样不用访问存储器,并且底层的指令很少,对于程序的执行效率很有保障。有上溢或者下溢,一次性就需要压栈或者出栈操作,使得其程序的执行效率不在那么高效。

而对于rtos来说,设计上也稍微复杂了一些,需要不仅需要判断当前窗口的溢出情况,还需要保存窗口寄存器的栈,这样对于系统上下文的线程栈需要的空间消耗是非常大的。目前也没有想到合适方式去减少栈的消耗,而且在rtos上,sparc架构所占的优势并不是很明显,以上仅仅是我对这种架构在嵌入式上使用的一些看法。

总结起来,sparc架构的好处是由于有了窗口寄存器模型,如果程序设计的优秀简单,这个是非常好的,效率也可以非常高,简洁的寄存器、简洁的控制状态,需要编程人员要有很高的水平。缺点就是不考虑sparc架构的编程方式,将会使得程序的效率非常的低下,sparc芯片的使用也变得十分的困难。

责任编辑:xj

原文标题:sparc体系架构的窗口寄存器的深入理解

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

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

    关注

    31

    文章

    5281

    浏览量

    119746
  • 窗口
    +关注

    关注

    0

    文章

    66

    浏览量

    10828
  • SPARC
    +关注

    关注

    0

    文章

    16

    浏览量

    9864

原文标题:sparc体系架构的窗口寄存器的深入理解

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

收藏 人收藏

    评论

    相关推荐

    寄存器间接寻址和寄存器寻址的区别

    寄存器间接寻址和寄存器寻址是计算机体系结构中两种重要的寻址方式,它们在指令执行过程中起着关键作用。下面将从定义、原理、特点、应用场景以及区别等方面对这两种寻址方式进行详细阐述。
    的头像 发表于 10-05 17:13 462次阅读

    微处理寄存器的作用

    微处理中的寄存器是计算机体系结构中的核心组成部分,它们扮演着至关重要的角色。寄存器是一种高速的存储单元,用于暂时存储数据、指令和地址等信息,以便微处理
    的头像 发表于 10-05 15:07 190次阅读

    ARM处理寄存器组织及功能

    ARM处理寄存器组织是其核心架构的重要组成部分,对于理解ARM处理的运行机制和性能特点具有重要意义。以下是对ARM处理
    的头像 发表于 09-10 11:11 783次阅读

    深入理解FPD-link III ADAS解串HUB产品

    电子发烧友网站提供《深入理解FPD-link III ADAS解串HUB产品.pdf》资料免费下载
    发表于 09-06 09:58 0次下载
    <b class='flag-5'>深入理解</b>FPD-link III ADAS解串<b class='flag-5'>器</b>HUB产品

    通用寄存器是什么意思

    在计算机体系结构中,通用寄存器是中央处理(CPU)内部最为核心和基础的组成部分之一。它们被设计为能够存储和传输各种类型的数据和指令,是CPU进行数据处理和运算的关键工具。通用寄存器
    的头像 发表于 09-05 14:13 497次阅读

    数字寄存器的原理和使用

    数字寄存器是计算机体系结构中至关重要的组成部分,其原理和使用对于理解计算机的工作原理和数据存储方式具有重要意义。
    的头像 发表于 09-05 14:08 302次阅读

    寄存器是什么意思?寄存器是如何构成的?

    在计算机科学中,寄存器(Register)是一个高速存储单元,它位于中央处理(CPU)内部,用于存储计算机程序执行过程中所需要的数据、指令地址或状态信息。寄存器是计算机体系结构中至关
    的头像 发表于 08-02 18:23 2735次阅读
    <b class='flag-5'>寄存器</b>是什么意思?<b class='flag-5'>寄存器</b>是如何构成的?

    寄存器寻址的实现方式

    在计算机体系结构中,寄存器寻址是一种常见的寻址方式,它允许程序直接访问CPU内部的寄存器寄存器寻址可以提高程序的执行效率,因为它避免了对内存的访问。
    的头像 发表于 07-12 10:36 475次阅读

    寄存器分为基本寄存器和什么两种

    寄存器是计算机中用于存储数据的高速存储单元,它们是CPU内部的重要组成部分。寄存器可以分为基本寄存器和扩展寄存器两种类型。 一、基本寄存器
    的头像 发表于 07-12 10:31 956次阅读

    移位寄存器的工作原理与作用

    据传输、数字信号处理、序列生成等多个领域发挥着不可或缺的作用。本文将对移位寄存器的工作原理和作用进行详细的阐述,旨在为读者提供全面而深入理解
    的头像 发表于 05-30 17:17 2618次阅读

    什么是寄存器?有哪些功能和应用?

    在计算机科学中,寄存器(Register)是一个高速存储单元,用于存储计算机程序执行过程中所需要的数据、指令地址或状态信息。它们是计算机体系结构中至关重要的组成部分,对计算机的运算速度和性能
    的头像 发表于 05-30 17:14 1.1w次阅读

    CPU中寄存器的用途

    在计算机体系结构中,中央处理单元(CPU)无疑是整个系统的核心。CPU负责执行指令、处理数据、控制计算机系统的运行等关键任务。而在这个过程中,寄存器扮演着至关重要的角色。本文将详细探讨CPU中寄存器的用途,包括其定义、功能、分类
    的头像 发表于 05-30 17:09 1082次阅读

    寄存器和内存的区别

    在计算机体系结构中,寄存器和内存是两个至关重要的组成部分。它们各自承担着不同的角色,共同确保计算机系统的正常运行。本文将对寄存器和内存进行详细的介绍,包括它们的定义、功能以及二者之间的主要区别。
    的头像 发表于 05-12 17:11 1714次阅读

    CPU的6个主要寄存器

    CPU寄存器是中央处理内的组成部分,是有限存贮容量的高速存贮部件。寄存器是CPU内部的元件,包括通用寄存器、专用寄存器和控制
    的头像 发表于 02-03 15:15 3611次阅读

    深入理解FFmpeg阅读体验》+ 书收到了,崭新的开篇

    今天收到了《深入理解FFmpeg》 崭新的书,一个在2022年较近距离接触过却尚未深入研究的领域图像处理。最近刚好在作这方面的研究,希望自己可以把握这次机会,好好学习下 FFMpeg,相信可以让自己
    发表于 01-07 18:57