【ARMv8/v9 GIC 系列 5 -- GIC GICD_CTRL 使用詳細介紹】

文章目錄

  • GICD_CTRL
    • GICD_CTLR 寄存器結構
      • RWP(Register Write Pending)
      • E1NWF(Enable 1 of N Wakeup Functionality)
      • DS(Disable Security)
    • 親和性路由(Affinity Routing)
      • ARE_NS
      • ARE_S
    • 中斷組使能
      • EnableGrp1S
      • EnableGrp1NS)
      • EnableGrp0

GICD_CTRL

GICv3(通用中斷控制器版本3)是ARM架構下用于管理和處理中斷的關鍵組件之一。它包含了多個寄存器,用于配置和控制中斷的行為。其中,GICD_CTLR(Distributor Control Register)是一個非常重要的寄存器,它用于啟用中斷和親和性路由設置。
在這里插入圖片描述

下面是對GICD_CTLR寄存器中一些關鍵位的詳細介紹:

GICD_CTLR 寄存器結構

GICD_CTLR的格式取決于訪問的安全狀態以及系統支持的安全狀態數量,這由GICD_CTLR.DS指定。當訪問為安全狀態,在支持兩種安全狀態的系統中,其結構如下:

RWP(Register Write Pending)

僅讀。指示是否有寄存器寫入操作正在進行。

  • 0b0:沒有寄存器寫入操作正在進行。之前對受影響寄存器字段的寫入操作的效果對GIC架構的所有邏輯組件(包括CPU接口)都是可見的。
  • 0b1:寄存器寫入操作正在進行。之前對受影響寄存器字段的寫入操作的效果不能保證對所有GIC架構的邏輯組件(包括CPU接口)都是可見的,因為更改的效果仍在傳播中。

RWP字段跟蹤以下內容的寫操作:

  • GICD_CTLR[2:0](組啟用位,僅限從10的轉變)
  • GICD_CTLR[7:4]ARE位,E1NWF位和DS位)
  • GICD_ICENABLER<n>

E1NWF(Enable 1 of N Wakeup Functionality)

如果硬件實現該bit,它將有以下行為:

  • 0b0:處于睡眠狀態的PE(處理元素)不能被選為 1 of N中斷。
  • 0b1:處于睡眠狀態的PE可以根據實現定義的控制被選為 1 of N中斷。

DS(Disable Security)

禁用安全性。

  • 0b0:不允許非安全訪問訪問和修改控制組0中斷的寄存器。
  • 0b1:允許非安全訪問訪問和修改控制組0中斷的寄存器。


如果當GICD_CTLR.ARE_S == 1時將DS從0寫為1,則對于單一安全狀態的GICD_CTLR.ARE是RAO/WI。
如果分配器只支持單一安全狀態,此位是RAO/WI。
如果分配器支持兩種安全狀態,此位是否可編程或實現為RAZ/WI是由實現定義的。設置此字段為1時,所有對GICD_CTLR的訪問都訪問單一安全狀態視圖,且所有位都是可訪問的。

設置為1后,只能通過硬件重置清除此字段。

如果在以下任何情況為真時將此位從0寫為1,則行為是不可預測的:

  • GICD_CTLR.ENABLEGRP0==1
  • GICD_CTLR.ENABLEGRP1S==1
  • GICD_CTLR.ENABLEGRP1NS==1
  • 一個或多個INTID處于激活或激活和掛起狀態。

親和性路由(Affinity Routing)

親和性路由(Affinity Routing)允許中斷被路由到特定的處理器上,從而提高系統的性能和效率。ARE_NSARE_S位分別控制非安全和安全狀態下的親和性路由功能。在修改這些設置之前,需要確保系統處于正確的狀態,否則可能會導致不可預測的行為。

以下是對這兩個位的詳細介紹:

ARE_NS

  • 0b0:非安全狀態下禁用親和性路由。
  • 0b1:非安全狀態下啟用親和性路由。

安全狀態下的親和性路由被啟用時,這個字段是只讀/寫入忽略(RAO/WI)。從0變為1的ARE_NS設置變化是不可預測的,除非GICD_CTLR.ENABLEGRP1_NON-SECURE == 0。從1變為0的ARE_NS設置變化也是不可預測的。如果沒有實現針對非安全狀態的GICv2向后兼容性,那么這個字段是只讀/寫入忽略(RAO/WI)。

ARE_S

  • 0b0:安全狀態下禁用親和性路由。
  • 0b1:安全狀態下啟用親和性路由。

從0變為1的ARE_S設置變化是不可預測的,除非全部滿足以下條件:

  • GICD_CTLR.ENABLEGRP0 == 0
  • GICD_CTLR.ENABLEGRP1S == 0
  • GICD_CTLR.ENABLEGRP1NS == 0

從1變為0的ARE_S設置變化也是不可預測的。

中斷組使能

GICD_CTLR(Distributor Control Register)寄存器中,有幾個位專門用來控制不同安全狀態下的中斷組的使能狀態。這些位包括EnableGrp1SEnableGrp1NSEnableGrp0,它們分別控制安全組1非安全組1組0中斷的使能狀態。

以下是這些控制位的詳細介紹:

EnableGrp1S

Enable Secure Group 1 Interrupts

  • 0b0:安全組1中斷被禁用。
  • 0b1:安全組1中斷被啟用。

這個位允許控制器啟用或禁用安全組1的中斷。
當設置為1時,安全組1中的中斷可以被發送到處理器;
當設置為0時,這些中斷被阻止。

EnableGrp1NS)

Enable Non-Secure Group 1 Interrupts

  • 0b0:非安全組1中斷被禁用。
  • 0b1:非安全組1中斷被啟用。

這個位的功能與EnableGrp1S相似,但它專門控制非安全狀態下的組1中斷。啟用這些中斷允許非安全環境的中斷傳遞給處理器。

EnableGrp0

Enable Group 0 Interrupts

  • 0b0:組0中斷被禁用。
  • 0b1:組0中斷被啟用。

組0中斷通常被用于處理安全相關的中斷。通過設置這個位,可以控制這類中斷是否能夠被分發和處理。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/40035.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/40035.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/40035.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【java計算機畢設】服裝生產管理系統java MySQL springboot vue html maven項目設計源代碼+萬字文檔

目錄 1項目功能 2項目介紹 3項目地址 1項目功能 【java計算機畢設】服裝生產管理系統java MySQL springboot vue html maven項目代碼文檔 2項目介紹 系統功能&#xff1a; 服裝生產管理系統包括管理員、用戶兩種角色。 管理員功能包括個人中心模塊用于修改個人信息和密碼&a…

【UE5.3】筆記6-創建可自由控制Pawn類

搭建場景 搭建一個場景&#xff1a;包含地板、圍墻。可以根據喜好加一些自發光的效果。 增加食物 創建食物藍圖類&#xff0c;在場景里放置一些食物以供我們player去吃掉獲取分值。 創建可控制的layer 我們先右鍵創建一個藍圖繼承自pawn類&#xff0c;起名BP_Player&#xf…

Python-算法編程100例-二分法(入門級)-業務負載分配

題目&#xff1a; 現有一個服務器集群&#xff08;服務器數量為 serverNum&#xff09;&#xff0c;和一批不同類型的任務&#xff08;用數組 tasks 表示&#xff0c;下標表示任務類型&#xff0c;值為任務數量&#xff09;。 現需要把這批任務都分配到集群的服務器上&#x…

2024年在WordPress中創建銷售活動的專家級優惠券方法

2024年在WordPress中創建銷售活動的專家級優惠券方法 今天我想和大家分享一些關于如何在WordPress網站上使用專家級優惠券工具來創建銷售活動的經驗。對于已經在電商領域有一定經驗的店主&#xff0c;利用專家級優惠券不僅能吸引顧客&#xff0c;還能顯著增加銷量。在這篇文章…

【Linux】線程封裝與互斥(萬字)

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 目錄 文章目錄 前言 C多線程的用法 對原生線程進行一次封裝 理解pthread線程 Linux線程互斥 進程線程間的互斥相關背景概念 互斥量mutex 操作共享變量會有問題的售票…

[go-zero] goctl 生成api和rpc

文章目錄 1.goctl 概述2.go-zero 需要安裝的組件3.生成 api4.生成 rpc 1.goctl 概述 goctl支持多種rpc&#xff0c;較為流行的是google開源的grpc&#xff0c;這里主要介紹goctl rpc protoc的代碼生成與使用。protoc是grpc的命令&#xff0c;作用是將proto buffer文件轉化為相…

探討命令模式及其應用

目錄 命令模式命令模式結構命令模式適用場景命令模式優缺點練手題目題目描述輸入描述輸出描述題解 命令模式 命令模式是一種行為設計模式&#xff0c; 它可將請求轉換為一個包含與請求相關的所有信息的獨立對象。 該轉換讓你能根據不同的請求將方法參數化、 延遲請求執行或將其…

《亞馬遜搬運亞馬遜產品》配合跟賣采集爬取跟賣店鋪高質量

亞馬遜高質量產品如何搬運&#xff1f;亞馬遜采集亞馬遜。 哈嘍大家好&#xff0c;大家講一下做亞馬遜是發貨、鋪貨這塊的功能。目前這款軟件做跟賣大家都知道&#xff0c;同時也支持做鋪貨。鋪貨可以采集國內的1688、淘寶、京東都可以采&#xff0c;采完之后也可以采速賣通&a…

周周星分享7.3—基于氣象大數據的自動站實況聯合預測

賽題 2024中國高校計算機大賽 — 大數據挑戰賽 經驗分享 大家好&#xff0c;我是掃地僧團隊的隊長&#xff0c;以前參加這樣打榜的比賽比較少&#xff0c;了解的打榜技巧不是太多&#xff0c;所以想從科研的角度給大家一點分享。 這次比賽主要從以下五個步驟進行&#xff1a…

Linux Doxygen快速生成文檔

此前寫過一篇編寫Doxygen格式的注釋以用于生成文檔,點擊以查閱, Doxygen常用語法與字段記錄,但是當時用的windows桌面版的doxygen,最近使用ubuntu編寫代碼想直接使用doxygen生成,故寫下此博客 Doxygen Doxygen是一個用于生成軟件文檔的工具&#xff0c;它可以從代碼中提取注釋…

(四)opengl函數加載和錯誤處理

#include <glad/glad.h>//glad必須在glfw頭文件之前包含 #include <GLFW/glfw3.h> #include <iostream>void frameBufferSizeCallbakc(GLFWwindow* window, int width, int height) {glViewport(0, 0, width, height);std::cout << width << &qu…

PHP多線程爬蟲:高效解析電商網頁內容

如何使用php多線程編寫高效的網頁爬蟲 隨著互聯網的發展和數據的不斷增長&#xff0c;網頁爬蟲成為了一種非常重要的工具。通過網頁爬蟲&#xff0c;我們可以自動地從各種網站上獲取大量的數據&#xff0c;并進行進一步的處理和分析。而PHP作為一種廣泛使用的編程語言&#xf…

Android高級面試_6_性能優化

Android 高級面試-7&#xff1a;網絡相關的三方庫和網絡協議等 1、網絡框架 問題&#xff1a;HttpUrlConnection, HttpClient, Volley 和 OkHttp 的區別&#xff1f; HttpUrlConnection 的基本使用方式如下&#xff1a; URL url new URL("http://www.baidu.com")…

SwanLinkOS首批實現與HarmonyOS NEXT互聯互通,軟通動力子公司鴻湖萬聯助力鴻蒙生態統一互聯

在剛剛落下帷幕的華為開發者大會2024上&#xff0c;伴隨全場景智能操作系統HarmonyOS Next的盛大發布&#xff0c;作為基于OpenHarmony的同根同源系統生態&#xff0c;軟通動力子公司鴻湖萬聯全域智能操作系統SwanLinkOS首批實現與HarmonyOS NEXT互聯互通&#xff0c;率先攻克基…

大模型與機器人精彩碰撞-7月5日晚上八點不見不散!

在瞬息萬變的科技時代&#xff0c;新興人工智能和機器人技術的結合正在引領新一輪的創新浪潮。你是否想成為未來科技的領航者&#xff1f;你是否想了解最前沿的AI與機器人技術&#xff1f;行麥科技重磅推出的“AIGC時代的生存法則”AI系列課&#xff0c;將為你揭開大模型與機器…

創建kset

1、kset介紹 2、相關結構體和api介紹 2.1 struct kset 2.2 kset_create_and_add kset_create_and_addkset_createkset_registerkobject_add_internalkobject_add_internal2.3 kset_unregister kset_unregisterkobject_delkobject_put3、實驗操作 #include<linux/module.…

【leetcode64-69二分查找、70-74棧、75-77堆】

二分查找[64-69] 時間復雜度O(log n)&#xff0c;要想到二分排序 35.搜索插入位置 class Solution:def searchInsert(self, nums: List[int], target: int) -> int:left 0right len(nums)-1while left < right: #左閉右閉mid (leftright)//2if nums[mid] < target…

【算法訓練記錄——Day39】

Day39——動態規劃Ⅱ 1.leetcode_62不同路徑2.leetcode_63不同路徑Ⅱ3.leetcode_343整數拆分4.leetcode_96不同的二叉樹搜索 1.leetcode_62不同路徑 思路&#xff1a;經典的動態規劃問題&#xff1a; dp[i][j]表示到達&#xff08;i&#xff0c;j&#xff09;位置時的不同路徑…

運維鍋總淺析云原生DevOps工具

本文從Tekton與Kubevela、Jenkins、GitLab CI的區別與聯系對常見的云原生DevOps工具進行對比分析&#xff0c;最后給出DevOps工具選型思路。希望對您有所幫助&#xff01; 一、DevOps簡介 DevOps是一種結合了軟件開發&#xff08;Development&#xff09;和IT運維&#xff08…

怎么在windows、linux、mac上安裝pnpm呢?

怎么在windows、linux、mac上安裝pnpm呢&#xff1f; 前言 如果您不使用獨立腳本或 pnpm/exe 來安裝 pnpm&#xff0c;則需要在系統上安裝 Node.js&#xff08;至少 v16.14&#xff09;。 原址&#xff1a;https://pnpm.io/zh/installation 使用獨立腳本安裝 即使沒有安裝…