1.前言

2.generate timer

2.1 概述

  1. 提供了一个系统计数器,用来实时测量流逝的时间;
  2. 提供了一个虚拟计数器,用来测量某个虚拟机上流逝的虚拟时间;
  3. 定时器,每隔一段时间会触发事件,支持正向计时和倒计时;
  4. 通用timer实现必须包含一个内存映射的系统组件:提供system counter;

2.2 完整的generic timer组件

  • System counter
  • Generic timer的PE实现

(1)一个物理的counter,它访问system counter的计数值;

(2)一个虚拟的counter,它访问虚拟时间;

(3)一组timers,所有的异常级别都实现了一个timer:

EL1物理timer;

EL2物理timer;

EL3物理timer;

虚拟timer

  • Generic timer系统级的内存映射实现

(1)内存映射的counter模块(必须),控制了system counter;

(2)内存映射的timer模块(必须),控制system timer;

(3)内存映射的timers(可选)

2.3 System Counter

概述

  1. 规格

(1)       Width:至少56bit;

(2)       频率:支持固定频率,典型是1-50MHZ;

(3)       ROLL-OVER:翻转时间不少于40 years;

(4)       Accuracy:未指定,24小时不多于10S;

(5)       Start-up:从0开始。

  1. System counter一旦配置并运行,必须提供统一的 system time view;
  2. System counter电源域必须常开;
  3. 为了支持低功耗,低频率可以一个时钟累加一个比1大的数;

初始化并读取system counter频率

系统启动阶段,初始化system counter的时钟;

System counter的内存映射控制

需要通过内存映射(ioremap??)的方式对system counter进行控制:

  1. 使能和禁用计数器;
  2. 设置计数器的值;
  3. 改变操作模式,更新频率或步长值;
  4. 使能halt-on-debug,可以用来suspend counting.

3. AArch64 generic timer

3.1 Physical counter(包含system connter的count值)

访问physical counter

通过访问CNTPCT_EL0来获取64bit物理count值

虚拟counter

指示虚拟时间

事件流

通过system counter周期性的产生事件

3.2 多个定时器

实现的timers

如果EL3使用AArch64则实现的定时器有:

  1. EL1物理定时器;
  2. Non-secure EL2物理定时器;
  3. Secure EL3物理定时器;

timer的输出

  1. 提供一个输出信号给sysem;
  2. 如果PE连到GIC,会想PE发送PPI信号

Timer regs

  1. 一个64bit compare值寄存器,提供了64bit无符加计数器;
  2. 一个32bit timer寄存器,提供了32bit有符号减计数器;
  3. 一个32bit control寄存器

4. 参考文档

[1] DDI0487A_k_armv8_arm_iss10775.pdf

ARMV8 datasheet学习笔记4:AArch64系统级体系结构之Generic timer的更多相关文章

  1. ARMV8 datasheet学习笔记3:AArch64应用级体系结构

    1.前言 本文主要从应用的角度介绍ARMV8的编程模型和存储模型 2. AArch64应用级编程模型 从应用的角度看到的ARM处理器元素: 可见的元素(寄存器/指令) 说明 可见的寄存器 R0-R30 ...

  2. ARMV8 datasheet学习笔记5:异常模型

    1.前言 2.异常类型描述 见 ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(1)-EL/ET/ST 一文 3. 异常处理路由对比 AArch32.AArch64架 ...

  3. ARMV8 datasheet学习笔记1:预备知识

    1. 前言 ARMv8的架构继承以往ARMv7与之前处理器技术的基础; 除了支持现有的16/32bit的Thumb2指令外,也向前兼容现有的A32(ARM 32bit)指令集. 基于64bit的AAr ...

  4. ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(4)- 其它

    1. 前言 2.可配置的指令使能/禁用控制和trap控制 指令使能/禁用 当指令被禁用,则这条指令就会变成未定义 指令Trap控制 控制某条或某些指令在运行时进入陷阱,进入陷阱的指令会产生trap异常 ...

  5. ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(1)-EL/ET/ST

    1.前言 ARMV8系统级编程模型主要包括异常级别.运行状态.安全状态.同步异常.异步异常.DEBUG 本文主要对系统级编程模型做一个概要介绍 2. 异常级别 2.1 Exception level概 ...

  6. ARMV8 datasheet学习笔记4:AArch64系统级体系结构之存储模型

    1.前言 关于存储系统体系架构,可以概述如下: 存储系统体系结构的形式 VMSA 存储属性   2. 存储系统体系结构 2.1.    地址空间 指令地址空间溢出 指令地址计算((address_of ...

  7. ARMV8 datasheet学习笔记2:概述

    1. 前言 本文主要概括的介绍ARMV8体系结构定义了哪些内容,概括的说: ARM体系结构定义了PE的行为,不会定义具体的实现 ARM体系结构也定义了debug体系结构和trace体系结构 ARM体系 ...

  8. ARMV8 datasheet学习笔记4:AArch64系统级体系结构之VMSA

    1. 前言 2. VMSA概述 2.1 ARMv8 VMSA naming VMSAv8 整个转换机中,地址转换有一个或两个stage VMSAv8-32 由运行AArch32的异常级别来管理 VMS ...

  9. ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(3)- 异常

    1.前言 本文介绍异常相关内容,包括异常类型,异常进入,异常返回,异常层次结构,异常的路由等 2.  RESET ARMV8体系结构支持两种类型的RESET Cold reset:Reset PE所有 ...

随机推荐

  1. 洛谷 P1430 序列取数 解题报告

    P1430 序列取数 题目描述 给定一个长为\(n\)的整数序列\((n<=1000)\),由\(A\)和\(B\)轮流取数(\(A\)先取).每个人可从序列的左端或右端取若干个数(至少一个), ...

  2. 洛谷 P3253 [JLOI2013]删除物品 解题报告

    P3253 [JLOI2013]删除物品 题目描述 箱子再分配问题需要解决如下问题: (1)一共有\(N\)个物品,堆成\(M\)堆. (2)所有物品都是一样的,但是它们有不同的优先级. (3)你只能 ...

  3. UVALive - 6440(模拟)

    题目链接:https://vjudge.net/contest/241341#problem/G 题目大意:输入一个N,n次操作.对于第一种操作增加一个病人,告诉病人的t0,st0,r.第二种操作,在 ...

  4. 最小割求法&&可行边和必须边

    最小割的可行边与必须边 就是在残量网络上跑tarjan 可行边: 满流并且残量网络上不能存在入点到出点的路径 必须边: 满流并且残量网络上入点能从源点到达,出点能到汇点. 任意一种最小割求法: 跑一边 ...

  5. 【codevs1048】石子归并(初级版)

    采用动态规划的原因:合并有一定次序,即:只能相邻石子进行合并. 阶段:当前合并了的区间长度 状态:区间的左右端点 状态转移方程:\(dp[l][r]=min\{dp[l][r],dp[l][k]+dp ...

  6. c#中用lua脚本执行redis命令

    直接贴出代码,实现执行lua脚本的方法,用到的第三方类库是 StackExchange.Redis(nuget上有) 注:下面的代码是简化后的,实际使用要修改, using System; using ...

  7. ASP 运行结果显示空白 --- 是编码的原因。

    比如有一个 a.asp 文件编码: utf-8 在a.asp代码中有一行:<!--#include file="b.asp"--> 但是 b.asp 文件编码是 gb2 ...

  8. hdu 2059龟兔赛跑("01"背包)

    传送门 https://www.cnblogs.com/violet-acmer/p/9852294.html 题解: 看到这个题,第一反应就是DP,因为对于每个充电站,都有两种选择,充电或不充电,和 ...

  9. Python基础【day01】:初始模块(五)

    本节内容 1.标准库 1.sys 2.os 2.第三方库 1.for mac 2.for linux Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的P ...

  10. Hbase记录-Hbase shell使用

    HBase Shell HBase包含可以与HBase进行通信的Shell. HBase使用Hadoop文件系统来存储数据.它拥有一个主服务器和区域服务器.数据存储将在区域(表)的形式.这些区域被分割 ...