0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

sparc體系架構的窗口寄存器的深入理解

嵌入式IoT ? 來源:嵌入式IoT ? 作者:嵌入式IoT ? 2021-01-07 10:39 ? 次閱讀

sparc體系架構的窗口寄存器的深入理解

1.概述

2.窗口寄存器的特性

3.程序的設計

4.sparc設計對于嵌入式編程的優(yōu)劣

1.概述

sparc這種架構有著特殊的窗口寄存器,使用sparc芯片,一定會對這種窗口寄存器產(chǎn)生疑惑,然而這種硬件特性卻讓軟件設計有著更加獨特的方式。下面來描述一下sparc架構中這種串口寄存器的特性以及編程模型。

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

采用窗口寄存器,可以減少函數(shù)調(diào)用過程中返回時間,因為通過硬件進行壓棧操作時,可以減少指令條數(shù)以及減少訪問存儲器的次數(shù)。

窗口寄存器的本質是每當執(zhí)行一次函數(shù)調(diào)用過程時,寄存器窗口會自動的指向下一個窗口,當子程序返回時,也不需要額外的出棧操作,只是將窗口偏移到上個寄存器即可。

而兩個相鄰的窗口則有重疊部分,可以對兩個父子函數(shù)之間進行參數(shù)傳遞,這樣大大的提高了訪問的效率以及寄存器的專一性。

2.窗口寄存器的特性

當在實際的程序中使用時,往往會涉及到多個函數(shù)的嵌套,這些在復雜程序設計上非常的普遍,業(yè)務邏輯的增加會顯著的增加函數(shù)調(diào)用的深度。如果函數(shù)調(diào)用超過了這些8個窗口,sparc架構又是該如何處理呢?

在sparc的架構中,CWP(當前窗口指針)是PSR(程序狀態(tài)寄存器)的一部分,在某一固定的時刻,處理器中都只會有32個整數(shù)寄存器可以被使用。這32個寄存器為8個全局寄存器、8個返回結果寄存器、8個局部寄存器、8個輸入寄存器。CWP通常會因SAVE指令(SAVE指令一般在過程調(diào)用時使用,用來開辟新的棧幀并切換寄存器窗口)而減一,因RESTORE指令(在從過程中返回前切換回調(diào)用者的寄存器窗口)而加一,陷阱事件(中斷,異?;騎RAP指令)和RETT指令(從陷阱中返回)也會改變CWP,不過函數(shù)調(diào)用比陷阱更為常見。

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

窗口無效掩碼(WIM) WIM指示了哪個窗口是無效的,無效的意思是該窗口保存了調(diào)用者的信息所以不可再使用,上圖中,WIM指向w7,而CWP指向w0,所以現(xiàn)在如果執(zhí)行一條SAVE指令,則會觸發(fā)窗口溢出陷阱,反之,如果CWP指向w0且又執(zhí)行了一條RESTORE指令,則會觸發(fā)窗口下溢陷阱。

所謂的窗口下溢則是說當前窗口不夠用了,需要將已經(jīng)滿了的窗口寄存器的數(shù)據(jù)壓入到棧上,也就是內(nèi)存中,壓入后的窗口寄存器又可以重新利用起來了,而上個滿了的窗口寄存器則存在內(nèi)存中了。當函數(shù)返回到窗口無效寄存器時,則發(fā)生上溢陷阱,該陷阱中會執(zhí)行出棧的操作,從而將寄存器進行恢復。

3.程序的設計

對于C語言來說,并不用關注架構的不同帶來的差異性,而對于匯編來說,則設計卻是完全的不同。GCC已經(jīng)處理好了C轉換成匯編的邏輯。

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

每個save指令都是在被調(diào)用的函數(shù)的第一條指令處開始執(zhí)行。而SAVE的指令與ADD的指令相同,其功能是可以將sparcCWP減一。讓CWP-1窗口成為新的當前的窗口。

當函數(shù)執(zhí)行完成后,則執(zhí)行restore指令,讓窗口指令加一。窗口就回歸原位了。

4.sparc設計對于嵌入式編程的優(yōu)劣

對于嵌入式來說,如果只設計可控的程序,邏輯設計上盡可能的單一可控,并且最好函數(shù)的嵌套深度不應該超過8個,最好不發(fā)生上溢或者下溢操作。這樣不用訪問存儲器,并且底層的指令很少,對于程序的執(zhí)行效率很有保障。有上溢或者下溢,一次性就需要壓?;蛘叱鰲2僮?,使得其程序的執(zhí)行效率不在那么高效。

而對于rtos來說,設計上也稍微復雜了一些,需要不僅需要判斷當前窗口的溢出情況,還需要保存窗口寄存器的棧,這樣對于系統(tǒng)上下文的線程棧需要的空間消耗是非常大的。目前也沒有想到合適方式去減少棧的消耗,而且在rtos上,sparc架構所占的優(yōu)勢并不是很明顯,以上僅僅是我對這種架構在嵌入式上使用的一些看法。

總結起來,sparc架構的好處是由于有了窗口寄存器模型,如果程序設計的優(yōu)秀簡單,這個是非常好的,效率也可以非常高,簡潔的寄存器、簡潔的控制狀態(tài),需要編程人員要有很高的水平。缺點就是不考慮sparc架構的編程方式,將會使得程序的效率非常的低下,sparc芯片的使用也變得十分的困難。

責任編輯:xj

原文標題:sparc體系架構的窗口寄存器的深入理解

文章出處:【微信公眾號:嵌入式IoT】歡迎添加關注!文章轉載請注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5423

    瀏覽量

    123431
  • 窗口
    +關注

    關注

    0

    文章

    66

    瀏覽量

    11054
  • SPARC
    +關注

    關注

    0

    文章

    16

    瀏覽量

    9997

原文標題:sparc體系架構的窗口寄存器的深入理解

文章出處:【微信號:Embeded_IoT,微信公眾號:嵌入式IoT】歡迎添加關注!文章轉載請注明出處。

收藏 1人收藏

    評論

    相關推薦
    熱點推薦

    使用寄存器點亮LED燈

    學習本章時,配合以上芯片手冊中的“19. I/O Ports”章節(jié)一起閱讀,效果會更佳,特別是涉及到寄存器說明的部分。本章內(nèi)容涉及到較多寄存器方面的深入內(nèi)容,對于初學者而言這些內(nèi)容豐富也較難
    的頭像 發(fā)表于 05-28 17:37 ?448次閱讀
    使用<b class='flag-5'>寄存器</b>點亮LED燈

    深入理解 Llama 3 的架構設計

    最新的自然語言處理(NLP)技術和深度學習算法,旨在提供更加自然、流暢和智能的對話體驗。 1. 核心組件 Llama 3的架構設計可以分為以下幾個核心組件: 1.1 預處理模塊 預處理模塊負責將原始文本數(shù)據(jù)轉換為模型可以理解的格式。這包括文本清洗
    的頭像 發(fā)表于 10-27 14:41 ?1113次閱讀

    什么是寄存器移位尋址

    寄存器移位尋址是一種特定的尋址方式,主要出現(xiàn)在某些處理架構中,如ARM指令集。這種尋址方式在處理數(shù)據(jù)移動和操作時提供了極大的靈活性和效率。下面將從定義、工作原理、特點、應用場景以及與其他尋址方式的對比等方面對
    的頭像 發(fā)表于 10-05 17:38 ?920次閱讀

    寄存器間接尋址和寄存器尋址的區(qū)別

    寄存器間接尋址和寄存器尋址是計算機體系結構中兩種重要的尋址方式,它們在指令執(zhí)行過程中起著關鍵作用。下面將從定義、原理、特點、應用場景以及區(qū)別等方面對這兩種尋址方式進行詳細闡述。
    的頭像 發(fā)表于 10-05 17:13 ?3288次閱讀

    微處理寄存器的作用

    微處理中的寄存器是計算機體系結構中的核心組成部分,它們扮演著至關重要的角色。寄存器是一種高速的存儲單元,用于暫時存儲數(shù)據(jù)、指令和地址等信息,以便微處理
    的頭像 發(fā)表于 10-05 15:07 ?1163次閱讀

    ARM處理寄存器組織及功能

    ARM處理寄存器組織是其核心架構的重要組成部分,對于理解ARM處理的運行機制和性能特點具有重要意義。以下是對ARM處理
    的頭像 發(fā)表于 09-10 11:11 ?2528次閱讀

    深入理解FPD-link III ADAS解串HUB產(chǎn)品

    電子發(fā)燒友網(wǎng)站提供《深入理解FPD-link III ADAS解串HUB產(chǎn)品.pdf》資料免費下載
    發(fā)表于 09-06 09:58 ?2次下載
    <b class='flag-5'>深入理解</b>FPD-link III ADAS解串<b class='flag-5'>器</b>HUB產(chǎn)品

    通用寄存器是什么意思

    在計算機體系結構中,通用寄存器是中央處理(CPU)內(nèi)部最為核心和基礎的組成部分之一。它們被設計為能夠存儲和傳輸各種類型的數(shù)據(jù)和指令,是CPU進行數(shù)據(jù)處理和運算的關鍵工具。通用寄存器
    的頭像 發(fā)表于 09-05 14:13 ?2023次閱讀

    數(shù)字寄存器的原理和使用

    數(shù)字寄存器是計算機體系結構中至關重要的組成部分,其原理和使用對于理解計算機的工作原理和數(shù)據(jù)存儲方式具有重要意義。
    的頭像 發(fā)表于 09-05 14:08 ?1238次閱讀

    寄存器故障分析

    寄存器故障分析是計算機硬件維護與系統(tǒng)穩(wěn)定性保障中的重要環(huán)節(jié)。寄存器作為計算機中的關鍵組成部分,負責存儲和傳輸數(shù)據(jù),其穩(wěn)定性和可靠性直接影響到整個計算機系統(tǒng)的性能。以下是對寄存器故障的全面分析,包括故障類型、故障現(xiàn)象、故障原因及診
    的頭像 發(fā)表于 08-29 11:26 ?2009次閱讀

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

    在計算機科學中,寄存器(Register)是一個高速存儲單元,它位于中央處理(CPU)內(nèi)部,用于存儲計算機程序執(zhí)行過程中所需要的數(shù)據(jù)、指令地址或狀態(tài)信息。寄存器是計算機體系結構中至關
    的頭像 發(fā)表于 08-02 18:23 ?6975次閱讀
    <b class='flag-5'>寄存器</b>是什么意思?<b class='flag-5'>寄存器</b>是如何構成的?

    寄存器尋址和直接尋址的區(qū)別

    寄存器尋址和直接尋址是計算機指令系統(tǒng)中的兩種基本尋址方式。它們在指令的執(zhí)行過程中起著至關重要的作用,決定了指令操作數(shù)的來源和目標。下面我們將介紹這兩種尋址方式的特點、區(qū)別以及在實際應用中的優(yōu)缺點
    的頭像 發(fā)表于 07-12 10:42 ?4000次閱讀

    寄存器尋址的實現(xiàn)方式

    在計算機體系結構中,寄存器尋址是一種常見的尋址方式,它允許程序直接訪問CPU內(nèi)部的寄存器。寄存器尋址可以提高程序的執(zhí)行效率,因為它避免了對內(nèi)存的訪問。
    的頭像 發(fā)表于 07-12 10:36 ?1365次閱讀

    寄存器有哪幾種?可以實現(xiàn)什么功能?

    寄存器是計算機中最基本的寄存器類型,用于存儲數(shù)據(jù)和指令。它們通常具有相同的大小和功能,可以用于執(zhí)行各種操作。通用寄存器的數(shù)量和大小因計算機架構而異,但常見的有8位、16位、32位和64
    的頭像 發(fā)表于 07-12 10:32 ?2081次閱讀

    寄存器分為基本寄存器和什么兩種

    寄存器是計算機中用于存儲數(shù)據(jù)的高速存儲單元,它們是CPU內(nèi)部的重要組成部分。寄存器可以分為基本寄存器和擴展寄存器兩種類型。 一、基本寄存器
    的頭像 發(fā)表于 07-12 10:31 ?2078次閱讀

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品