协处理器

Tiny4412裸机程序之操作ICache

帅比萌擦擦* 提交于 2020-03-25 08:55:32
3 月,跳不动了?>>> 一、首先普及一下什么是Cache 基于程序访问的局限性,在主存和CPU通用寄存器之前设置了一类高速的、容量较小的存储器,把正在执行的指令地址附件的一部分指令或数据从主存调入这类存储器,供CPU在一段时间内使用,这对提高程序的运行速度有很大的作用。这类介于主存和CPU之间的高速小容量存储器称作高速cache。比较常见的cache包括icache和dcache。 icache的使用比较简单,系统刚上电时,icache中的内容是无效的,并且icache的功能是关闭的,往CP15协处理器中的寄存器1的bit[12]写1可以启动icache,写0可以停止icache。icache关闭时,CPU每次取指都要读主存,性能非常低。因为icache可随时启动,越早开icache越好。与icache相似,系统刚上电时, dcache中的内容是无效的,并且dcache的功能是关闭的,往CP15协处理器中的寄存器1的bit[2]写1可以启动dcache,写0可以停止dcache。因为 dcache必须在启动mmu后才能被启动,而对于裸机而言,没必要开mmu,所以本教程的程序将不会启动dcache。 二、再介绍一下ARM协处理器CP15及MCR和MRC指令 在基于ARM的嵌入式应用系统中,存储系统通常是通过系统控制协处理器CP15完成的。CP15包含16个32位的寄存器,其编号为0

华为二级索引解决方案

独自空忆成欢 提交于 2020-02-21 23:52:03
Hbase 作为列族 数据库 最经常被人诟病的特性包括:无法轻易建立“二级索引”,难以执行求和、计数、排序等操作。比如,在旧版本的(<0.92)Hbase中, 统计数据表 的总行数,需要使用Counter方法,执行一次MapReduce Job才能得到。虽然HBase在 数据存储层 中集成了MapReduce,能够有效用于数据表的分布式计算。然而在很多情况下,做一些简单的相加或者聚合计算的时候,如果直接将计算过程放置在server端,能够减少通讯开销,从而获得很好的性能提升。于是,HBase在0.92之后引入了协处理器(coprocessors),实现一些激动人心的新特性:能够轻易建立二次索引、复杂过滤器(谓词下推)以及访问控制等。 而华为二级索引是华为内部一个解决这个问题的方案。大致思路如下 : 这个是华为的二级索引方案,已经开放源代码了,下面是网上的一篇讲解原理的帖子,发出来和大家共享一下。 经过本人认真阅读了一下代码,发现这个源码仅供参考,想要集成到原有的集群当中是有点儿难度的,它对hbase的源码进行不少的修改。 源码地址: https://github.com/Huawei-Hadoop/hindex 下面来对其方案做一个分析。 1.整体架构 这个架构在Client Ext中设定索引细节,在Balancer中收集信息,在Coprocessor中管理二级索引数据。 2

Linux源码学习三、vmlinux.lds.S、MRC/MCR协处理器寄存器指令和head.S文件分析

微笑、不失礼 提交于 2020-01-24 02:59:01
①vmlinux.lds.S文件在目录arch/arm/kernel/vmlinux.lds.S下 分析VMLINUX_SYMBOL(__proc_info_begin) = .; vmlinux.lds.S文件 的内容为: #include <asm-generic/vmlinux.lds.h> #include <asm/thread_info.h> #include <asm/memory.h> #include <asm/page.h> 分别表示include文件夹里的<>目录下的内容。 #define PROC_INFO \ VMLINUX_SYMBOL(__proc_info_begin) = .; \ *(.proc.info.init) \ VMLINUX_SYMBOL(__proc_info_end) = .; \表示连接符,一个句子太长分开连接的意思,相当于: 相当于 PROC_INFO 代表后面一长串,包含后面的分号。 VMLINUX_SYMBOL(__proc_info_begin) = .; 因为 vmlinux.lds.S文件 引入: #include <asm-generic/vmlinux.lds.h> ,在 目录include/asm-generic/vmlinux.lds.h头 文件中有部分内容为: #ifndef SYMBOL_PREFIX

ARM装配说明MCR/MRC学习

走远了吗. 提交于 2019-12-18 13:50:36
MCR指令ARM数据寄存器传送到协处理器寄存器。假设协处理器不能成功运行操作。会产生未定义指令中止。 语法教学格式: MCR{<cond>} p15, 0, <Rd>, <CRn>, <CRm>{,<opcode_2>} MCR2 p15, 0, <Rd>, <CRn>, <CRm>{,<opcode_2>} 当中。<cond>为指令运行的条件码。当<cond>忽略时指令为无条件运行。MCR2中,<cond>为Ob1111,指令为无条件运行指令。 <opcode_1>为协处理器将运行的操作的操作码。 对于CP15协处理器来说, <opcode_1>永远为0b000,当<opcode_1>不为0b000时,该指令操作结果不可预知。 <Rd>作为元寄存器的ARM寄存器。其值被传送到得协处理器寄存器中。 <Rd>不能为PC。当其为PC时。指令操作结果不可预知。 <CRn>作为目标寄存器的协处理器寄存器,其编号可能为C0,C1....C15。 <CRm>附加的目标寄存器或者原操作数寄存器。用于区分同一个编号的不同物理寄存器。当指令中不须要提供附加信息时,将C0指定为<CRm>,否则指令操作结果不可预知。 <opcode_2>提供附加信息,用于差别同一个编号的不同物理寄存器。当指令中指定附加信息时,省略<opcode_2>或者将其指定为0,否则指令操作结果不可预知。

ARM异常及中断处理介绍(中断是异常的一种)

谁都会走 提交于 2019-12-18 02:27:03
中断 概念 :是一个过程,是CPU在执行当前程序的过程中因硬件或软件的原因插入了另一段程序运行的过程。因硬件原因引起的中断过程的出现时不可预测的,即随机的,而软中断是事先安排好的。 中断源 概念 :可以引起中断的信号源。 异常优先级 ARM处理器中有7种类型的异常,按优先级 从高到低 的排列如下: 复位异常 (Reset)、 数据异常 (Data Abort)、 快速中断异常 (FIQ)、 外部中断异常 (IRQ)、 预取异常 (Prefetch Abort)、 软中断异常 (SWI)、 未定义指令异常 (Undefined interrupt)。 优先级最低的两种异常是软件中断异常和未定义指令异常。因为正在执行的指令不可能既是一条软中断指令,又是一条未定义指令,所以软中断异常和未定义指令异常享有相同的优先级。 注意 在ARM处理器中(Exception)和中断(Interrupt)有些差别,异常主要是从处理器被动接受异常的角度出发,而中断带有向处理器主动申请的色彩。此文中对“异常”和“中断”不做严格区分;两者都是指请求处理器打断正常的程序执行流程,进入特定程序循环的一种机制。 异常 概念 :异常由内部或外部源产生并引起处理器处理一个事件。在处理异常之前,处理器状态必须保留,一遍在异常处理程序完成后,原来的程序能够重新执行。同一时刻可能出现多个异常。 注意 当异常出现时

ARM汇编指令

让人想犯罪 __ 提交于 2019-12-10 07:40:14
转载: arm汇编指令-Bingghost-博客园 学习嵌入式系统时的资料收集 ARM处理器的指令集可以分为跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和异常产生指令6大指令 一、跳转指令 跳转指令用于实现程序流程的跳转 跳转指令分类 Ⅰ.使用专门的跳转指令 分支指令 B 带链接的分支指令: BL 带状态切换的分支指令 BX Ⅱ. 程序计数器PC控制 直接向程序计数器PC写入跳转地址值,通过向程序计数器PC写入跳转地址值 可以实现在4GB的地址空间中的任意跳转,在跳转之前结合使用MOV LR,PC等类似指令 可以保存将来的返回地址值,从而实现在4GB连续的线性地址空间的子程序调用。 ARM指令集中的跳转指令可以完成从当前指令向前或向后的32MB的地址空间的跳转,包括以下4条指令: 1、B指令 B指令的格式为: B{条件} 目标地址 2、BL指令 BL指令的格式为: BL{条件} 目标地址 BL是另一个跳转指令,但跳转之前,会在寄存器R14中保存PC的当前内容, 因此,可以通过将R14的内容重新加载到PC中,来返回到跳转指令之后的那个 指令处执行。 该指令是实现子程序调用的一个基本但常用的手段 3、BLX指令 BLX指令的格式为: BLX 目标地址 BLX指令从ARM指令集跳转到指令中所指定的目标地址

手写bootloader(手写*_*)

╄→尐↘猪︶ㄣ 提交于 2019-12-04 14:01:11
思路 1.关看门狗 2.设置时钟 3.初始化sdram 4.重定位 5.执行main .text 表示代码段 .global _start (global 表示全局标号) 关看门狗 可以调c完成disable_watch_dag 确定看门狗地址0x.... ldr r0 ,=0x... ldr 违汇编指令 mov r1,#0 str r1, [r0] 设置时钟 可以用 c clock_init() CLKDIVN 定义位置board中 ldr r0, =0x4c00001 mov r1, #0x03 0x03 分频系数 //FCLK:HCLK:PCLK=1:2:4, HDIVN=1,PDIVN=1 str r1,[r0] asm 如果是c,它是标志嵌入汇编 读芯片手册,调整异步模式,根据芯片具体情况 mrc 指令将ARM处理器的寄存器中的数据传送到协处理器的寄存器中。如果协处理器不能成功地执行该操作,将产生未定义的指令异常中断 MCR{ } p15, 0, , , {, } 为协处理器将执行的操作的操作码。对于CP15协处理器来说, 永远为0b000,当 不为0b000时,该指令操作结果不可预知 作为元寄存器的ARM寄存器,其值被传< Rd>不能为PC,当其为PC时,指令操作结果不可预知送到得协处理器寄存器中 作为目标寄存器的协处理器寄存器,其编号可能为C0,C1....C15。

用例建模Use Case Modeling

。_饼干妹妹 提交于 2019-12-03 09:26:28
我的工程实践选题为ESP32低功耗的实现,本项目基于ESP32嵌入式开发平台. 以此题为例,在理解项目需求的基础上进行用例建模,抽取Abstract use case,画出用例图,并确定每一个用例的范围High level use case,对关键用例进一步进行Expanded use case分析。 一、用例建模简介 从用户的角度来看,他们并不想了解系统的内部结构和设计,他们所关心的是系统所能提供的服务,也就是被开发出来的系统将是如何被使用的,这就用例方法的基本思想。 1、用例模型主要由以下模型元素构成: (1)参与者(Actor) 参与者是指存在于被定义系统外部并与该系统发生交互的人或其他系统,他们代表的是系统的使用者或使用环境。 (2)用例(Use Case) 用例用于表示系统所提供的服务,它定义了系统是如何被参与者所使用的,它描述的是参与者为了使用系统所提供的某一完整功能而与系统之间发生的一段对话。 (3)通讯关联(Communication Association) 通讯关联用于表示参与者和用例之间的对应关系,它表示参与者使用了系统中的哪些服务(用例),或者说系统所提供的服务(用例)是被哪些参与者所使用的。 这三种元素在UML中的表述如下所示: 2、用例建模的主要步骤: 确定系统边界 确定参与者 找出所有的用例 确定每个用例的级别 撰写用例的文字描述

Hbase协调处理器一

匿名 (未验证) 提交于 2019-12-03 00:11:01
Hbase协调处理器<一> 1. 简介 1 起因 Hbase 作为列族数据库最经常被人诟病的特性包括:无法轻易建立“二级索引”,难以执 行求和、计数、排序等操作。比如,在旧版本的(<0.92)Hbase 中,统计数据表的总行数,需 要使用 Counter 方法,执行一次 MapReduce Job 才能得到。虽然 HBase 在数据存储层中集成 了 MapReduce,能够有效用于数据表的分布式计算。然而在很多情况下,做一些简单的相 加或者聚合计算的时候,如果直接将计算过程放置在 server 端,能够减少通讯开销,从而获 得很好的性能提升。于是,HBase 在 0.92 之后引入了协处理器(coprocessors),实现一些激动 人心的新特性:能够轻易建立二次索引、复杂过滤器(谓词下推)以及访问控制等。 2 分类 协处理器有两种: Observer Observer 类似于传统数据库中的触发器,当发生某些事件的时候这类协处理器会被 Server 端调用。Observer Coprocessor 就是一些散布在 HBase Server 端代码中的 hook 钩子, 在固定的事件发生时被调用。比如:put 操作之前有钩子函数 prePut,该函数在 put 操作执行前会被 Region Server 调用;在 put 操作之后则有 postPut 钩子函数 hbase0

[转帖]新一代IBM Z14主机技术介绍

匿名 (未验证) 提交于 2019-12-03 00:11:01
新一代IBM Z14主机技术介绍 https://cloud.tencent.com/developer/news/268909IBM最新的已经有IBM Z15 主机了.. 文章来源:企鹅号 - 云间设备e线 编者按:随着我行业务的稳步推进,特别是近来互联网业务的发展与金融市场的活跃,我行的核心生产主机系统的交易负载和核心数据库存储规模与日俱增,核心业务交易量呈现迅猛的增长趋势,需要处理能力强大、安全、稳定、可靠的IT基础架构予以支撑。除此之外,为应对新增业务、特殊业务和临时需求带来的不可预期的突发高峰,配置管理的灵活性和资源的扩展性也不可或缺。我行自2013年开始,在核心生产环境引入EC12主机使用至今已超过5年,根据IBM宣布的EC12主机产品生命周期计划,EC12主机将于2017年12月31日后完全退出市场。同时,IBM公司已于2017年7月份推出最新一代大型机Z14,它具有超越EC12的高性能、高可靠性以及更大容量,具有更好的扩展能力,相比EC12无论在性能上还是功能上都有非常显著的增强。我行现已采购2台Z14主机耦合器,为主机系统可靠运行继续提供强有力的支撑。下面,对Z14主机技术做个简要介绍。 一、硬件配置增强 Z14主机单处理器的主频为5.2GHz,单核容量Processor Capacity Index (IBM MIPS)大幅提升21%,可配置处理器170颗