一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

sparc體系架構(gòu)的窗口寄存器的深入理解

嵌入式IoT ? 來(lái)源:嵌入式IoT ? 作者:嵌入式IoT ? 2021-01-07 10:39 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

sparc體系架構(gòu)的窗口寄存器的深入理解

1.概述

2.窗口寄存器的特性

3.程序的設(shè)計(jì)

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

1.概述

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

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

采用窗口寄存器,可以減少函數(shù)調(diào)用過(guò)程中返回時(shí)間,因?yàn)橥ㄟ^(guò)硬件進(jìn)行壓棧操作時(shí),可以減少指令條數(shù)以及減少訪問(wèn)存儲(chǔ)器的次數(shù)。

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

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

2.窗口寄存器的特性

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

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

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

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

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

3.程序的設(shè)計(jì)

對(duì)于C語(yǔ)言來(lái)說(shuō),并不用關(guān)注架構(gòu)的不同帶來(lái)的差異性,而對(duì)于匯編來(lái)說(shuō),則設(shè)計(jì)卻是完全的不同。GCC已經(jīng)處理好了C轉(zhuǎn)換成匯編的邏輯。

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

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

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

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

對(duì)于嵌入式來(lái)說(shuō),如果只設(shè)計(jì)可控的程序,邏輯設(shè)計(jì)上盡可能的單一可控,并且最好函數(shù)的嵌套深度不應(yīng)該超過(guò)8個(gè),最好不發(fā)生上溢或者下溢操作。這樣不用訪問(wèn)存儲(chǔ)器,并且底層的指令很少,對(duì)于程序的執(zhí)行效率很有保障。有上溢或者下溢,一次性就需要壓?;蛘叱鰲2僮鳎沟闷涑绦虻膱?zhí)行效率不在那么高效。

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

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

責(zé)任編輯:xj

原文標(biāo)題:sparc體系架構(gòu)的窗口寄存器的深入理解

文章出處:【微信公眾號(hào):嵌入式IoT】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

    關(guān)注

    31

    文章

    5434

    瀏覽量

    124513
  • 窗口
    +關(guān)注

    關(guān)注

    0

    文章

    66

    瀏覽量

    11099
  • SPARC
    +關(guān)注

    關(guān)注

    0

    文章

    16

    瀏覽量

    10029

原文標(biāo)題:sparc體系架構(gòu)的窗口寄存器的深入理解

文章出處:【微信號(hào):Embeded_IoT,微信公眾號(hào):嵌入式IoT】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    使用寄存器點(diǎn)亮LED燈

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

    深入理解C語(yǔ)言:循環(huán)語(yǔ)句的應(yīng)用與優(yōu)化技巧

    能讓你的代碼更加簡(jiǎn)潔明了,還能顯著提升程序執(zhí)行效率。本文將詳細(xì)介紹C語(yǔ)言中的三種常見(jiàn)循環(huán)結(jié)構(gòu)——while循環(huán)、for循環(huán)和do...while循環(huán),帶你深入理解
    的頭像 發(fā)表于 12-07 01:11 ?636次閱讀
    <b class='flag-5'>深入理解</b>C語(yǔ)言:循環(huán)語(yǔ)句的應(yīng)用與優(yōu)化技巧

    深入理解 Llama 3 的架構(gòu)設(shè)計(jì)

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

    接口的控制與狀態(tài)寄存器什么作用

    接口的控制與狀態(tài)寄存器(Control and Status Registers,簡(jiǎn)稱CSR)是計(jì)算機(jī)系統(tǒng)中用于控制和監(jiān)控硬件設(shè)備操作的寄存器。它們是硬件設(shè)備與其驅(qū)動(dòng)程序之間的橋梁,允許軟件控制硬件
    的頭像 發(fā)表于 10-17 10:42 ?1531次閱讀

    什么是寄存器移位尋址

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

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

    寄存器間接尋址和寄存器尋址是計(jì)算機(jī)體系結(jié)構(gòu)中兩種重要的尋址方式,它們?cè)谥噶顖?zhí)行過(guò)程中起著關(guān)鍵作用。下面將從定義、原理、特點(diǎn)、應(yīng)用場(chǎng)景以及區(qū)別等方面對(duì)這兩種尋址方式進(jìn)行詳細(xì)闡述。
    的頭像 發(fā)表于 10-05 17:13 ?3681次閱讀

    微處理寄存器的作用

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

    ARM處理寄存器組織及功能

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

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

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

    ARM寄存器的分類及功能

    ARM寄存器是ARM處理內(nèi)部的重要組成部分,它們?cè)谔幚?b class='flag-5'>器的運(yùn)算、控制以及數(shù)據(jù)存儲(chǔ)等方面發(fā)揮著至關(guān)重要的作用。下面,我們將從ARM寄存器的定義、結(jié)構(gòu)、分類以及功能等多個(gè)方面進(jìn)行詳細(xì)闡述
    的頭像 發(fā)表于 09-05 14:18 ?2936次閱讀

    通用寄存器是什么意思

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

    寄存器的類型和作用

    在計(jì)算機(jī)科學(xué)中,寄存器(Register)是一種高速存儲(chǔ)單元,它位于CPU內(nèi)部,與CPU的運(yùn)算單元和邏輯控制單元緊密相連。寄存器的主要作用是暫時(shí)存儲(chǔ)指令、操作數(shù)和地址等臨時(shí)數(shù)據(jù),以便CPU快速訪問(wèn)和處理。由于寄存器直接集成在CP
    的頭像 發(fā)表于 09-05 14:11 ?4773次閱讀

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

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

    寄存器故障分析

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

    寄存器是什么意思?寄存器是如何構(gòu)成的?

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