成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

圖解SOC中的Time:系統里有哪些Timer?

系統 Linux
一個大的系統里,有多少個Timer?這些Timer的作用分別是什么?這些Timer有什么區別?它們的精確度有什么不同嗎?

說明:

本文講述的是armv8-aarch64、armv9架構在設計模式上,本文帶有一些個人的見解,如有不同的見解,可以評論區或微信群參與討論。

思考:

  • 一個大的系統里,有多少個Timer?這些Timer的作用分別是什么?這些Timer有什么區別?它們的精確度有什么不同嗎?
  • Linux Kernel的Tick使用的是哪個Timer?watchdog是用的哪個Timer?
  • 一個ARM Core里有又多少個Timer?不同軟件系統中的Timer的使用方式有何不同嗎?
  • 應用程序中的 setitimer()這樣的函數是否會調用到底層程序?
  • 應用程序要讀取當前系統時間戳的時候,是否需要調用到kernel space? 在glibc中是否就可以實現了?
  • 什么是arch timer?什么是SOC Timer、apb timer、memory-mapped timer?
  • 對于arch timer,又分為物理timer和虛擬timer?那么什么時候使用物理timer,什么時候使用虛擬timer?為什么?
  • EL1和S-EL1中使用的arch timer是如何隔離的?(這里所說的隔離是指寄存器如何隔離的,中斷如何隔離的) 9、EL3 Physical Timer對應的寄存器為什么是xxxEL1, 不應該是xxxEL3嗎?

1、系統里面有多少個Timer?

圖片

如上圖所示,在一個SOC中一定/可能存在:

  • core timer(也叫arch timer),每個core中都有這個Timer
  • SOC Timer(也叫apb timer、memory-mapped Timer),可能會有多個,可以存在以下這樣的:

(1) 一個專門給Non-secure 使用的timer

(2) 一個專門給Secure 使用的timer

(3) 一個專門用于特定用途的timer(4) 、綁定core的Timer,例如8個timer,固定某個timer給某個core使用

2、每一個core里面又有多少個Timer

2.1、四個物理Timer

圖片

  • EL1 Physical Timer 不區分secure和non-secure,但在ATF的switch cpucontext的時候,會保存和恢復相關寄存器,所以從軟件視角來看是有兩套寄存器,也就是有 non-secure EL1PhysicalTimer? 和 secure EL1PhysicalTimer?,這也是最最理想的設計方案。然而非常非常非常非常的遺憾的是,寄存器通過軟件switch cpucontext可以變成2套,但中斷呢?中斷是無法同時給non-secure和secure同時使用的,也無法做到中斷在Security State之間的隔離。既然這樣,說明這樣的硬件是一個"非常嚴重"的問題,那么我們看下軟件是怎么使用的呢?

(1)Linux Kernel正常使用,在讀取counter值、counter頻率的同時,也會設置CTL、CVAL、TVAL等相關寄存器,也會觸發和處理30中斷(EL1 Physical Timer的默認中斷號是30);(2)optee中,僅僅是讀取counter值、counter頻率的同時,就可以計算時間戳了。optee不會讀取CTL、CVAL、TVAL等相關寄存器,當然也不會觸發和處理30中斷了。

以上便是軟件基于“硬件缺陷”而進行的設計,自然也不會出現什么問題。然后你說ARM Timer有缺陷就有缺陷了?你真的懂它們的設計嗎?事實上ARM的設計中,也考慮了上面描述的問題。你仔細看看它的 ?EL3PhysicalTimer?,他的寄存器的名字竟然是 xxx_EL1?(而不是 xxx_EL3?),也就是說它本身就是想給secure security用的(EL3也屬于secure security)。另外我也參考了具體的arm core trm手冊,發現 EL3PhysicalTimer?所對應的中斷號(29號中斷)的signal configuration描述為"Secure EL1 Pyhsical Timer"。我們再查一下BL32(Secure EL1)的參考程序 trusted-firmware-a/bl32/tsp/tsp_timer.c?, 它操作的也正是 EL3PhysicalTimer。 

總結: 

(1) ?EL1PhysicalTimer? 不區分secure和non-secure,在secure和non-secure之間也無法做到隔離。一般情況下它是給NS-EL1使用的。當然S-EL1如果是僅僅讀取counter和頻率獲取當前時間戳,也是可以用的,但這不應該是建議的。因為這樣造車non-secure也可以竊取到secure側的時間戳。

(2) ?EL3PhysicalTimer? 的本意就是想給secure用的,包括EL3和S-EL1

  • EL2 Physical Timer 給non-secure EL2使用的
  • S-EL2 Physical Timer 給secure EL2使用的
  • EL3 Physical Timer 給Secure使用的,包括EL3和S-EL1

2.2、三個虛擬Timer

圖片

EL1VirtualTimer?主要是給EL1 OS(guest os)使用的,那么對于一個操作系統,它到底是使用 EL1PhysicalTimer?還是使用 EL1VirtualTimer? ? 由宏控決定,在編譯的時候就決定了。例如你這個OS沒有跑在VM中,那么就使用 EL1PhysicalTimer?,如果你這個OS是要跑在VM中的,那么就使用 EL1VirtualTimer

圖片

EL2PhysicalTimer?是很好理解的,就是給EL2管理程序使用的嘛,但是 EL2VirtualTimer?是給誰用的呢? 這里就需要一點虛擬化的概念了, EL2VirtualTimer是給Host App使用的。

作者簡介:

Baron (csdn:代碼改變世界ctw),九年手機安全/SOC底層安全開發經驗。擅長trustzone/tee安全產品的設計和開發。

責任編輯:武曉燕 來源: Linux閱碼場
相關推薦

2019-06-26 09:10:07

操作系統調度算法

2019-08-28 09:27:33

Linux操作系統技術

2015-10-13 09:56:33

2009-07-17 16:32:34

Timer對象Swing

2025-02-13 09:26:43

Python元組集合

2011-04-26 17:30:23

2021-01-05 10:17:38

人臉識別AI人工智能

2023-08-05 00:10:18

2022-06-14 23:23:29

區塊鏈比特幣數據庫

2013-08-09 15:19:57

Windows系統盜版系統

2009-12-03 16:01:18

IP TIME雙WAN

2022-08-27 14:14:06

Spring事務開發

2010-05-05 10:49:34

Oracle 復合類型

2024-04-01 11:43:51

Rust開發插件

2021-06-27 17:20:20

遺留系統隱形成本CIO

2023-09-03 22:14:23

分布式ID

2021-03-08 10:48:04

AI

2023-06-05 16:41:27

Python開發

2022-09-22 15:01:13

智能建筑物聯網

2010-04-21 09:12:56

Oracle JDBC
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人亚洲精品 | 365夜爽爽欧美性午夜免费视频 | 日本三级在线 | 成人免费观看男女羞羞视频 | 欧美日韩精品中文字幕 | 国产成人久久精品一区二区三区 | 亚洲激情一级片 | 久久精品日产第一区二区三区 | 另类亚洲视频 | 天天狠狠 | 91成人在线 | 一级午夜aaa免费看三区 | 在线观看视频91 | 亚洲在线免费观看 | 日韩一级免费看 | www.日韩免费 | 国产精品欧美精品 | 久久综合久色欧美综合狠狠 | 日韩欧美三区 | 成人亚洲网 | 国产精品久久精品 | 羞羞视频网 | 亚洲国产精品一区在线观看 | 国产成人高清 | 一级二级三级在线观看 | 成人高清在线 | 一区二区三区视频在线观看 | 国产精品一区久久久 | 国产激情视频在线观看 | 成av在线 | 国产精品久久久乱弄 | 欧美电影免费网站 | 黄色亚洲网站 | 一级黄在线观看 | 国产区在线观看 | 99免费看 | 亚州精品成人 | 国产精品九九九 | 欧美日韩第一页 | 本道综合精品 | 国产蜜臀97一区二区三区 |