自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 AMBA AXI协议规范讲解(6)

图A3-10和图A3-11中的示例表明,字节不变性确保了大端和小端结构可以在单一内存空间中共存而不发生损坏。在这个结构中,例如,数据项是一个两个字节的小端元素,这意味着其最低地址是其最低有效字节(LSB)。图A3-13显示了在32位总线上INCR突发的示例,包括对齐和不对齐的32位传输。图A3-14显示了在64位总线上INCR突发的示例,包括对齐和不对齐的32位传输。本节描述了AXI协议中不同大小的读写操作在数据总线上的传输形式,以及如何执行混合字节序传输和未对齐的传输(阴影部分表示未传输的字节。

2024-10-29 10:42:32 1029

原创 AMBA AXI协议规范讲解(5)

burst的突发、大小和长度有多种形式。然而,一些接口和传输类型可能仅使用这些形式的一部分。如果一个从属组件连接到一个仅使用实现一部分功能的主设备,则可以采用简化的解码逻辑进行设计。:支持 AxBURST、AxSIZE 和 AxLEN 的所有合法组合。本节提供了burst传输内传输地址和有效字节通道的确定方法。表 A3-4 提供了关于连接具有不同属性值的主设备和从设备的指导。:数据总线中的字节通道数量。:每次数据传输中的最大字节数。:传输中地址最低字节的字节通道。:传输中地址最高字节的字节通道。

2024-10-29 10:18:00 1117

原创 AMBA AXI协议规范讲解(4)

本篇作为上一篇的补充,继续讲解AXI协议中的基本协议,主要包括传输结构,即busrt传输的定义。

2024-10-28 08:59:11 1439

原创 AMBA AXI协议规范讲解(3)

本小节重点讲述了AXI规范中的基本构成和基本协议,比如经典的握手协议以及尊徐的规范。

2024-10-28 08:56:42 1382

原创 AMBA AXI协议规范讲解(2)

注:系统中总线接口时钟都在同一个时钟域中,从设备和主设备可以与总线时钟不在同一个时钟域中,但数据的跨时钟处理必须在设备中进行。大多数信号是AXI3和AXI4协议实现所必需的,概述信号的表格标识了例外情况。AXI协议中的第二章内容没啥意思,就是列举了AXI中每个通道包含的信号名称和含义,这是AXI最基础的东西,没啥好说的。后面的章节将定义这些信号的参数和使用方法。中有实现低功耗功能的相关接口,如下,但在。其中,标注的AXI4。其中,标注的AXI4。其中,标注的AXI4。5中删除了以下信号。

2024-10-25 15:18:37 539

原创 AMBA AXI协议规范讲解(1)

注:AXI5-Lite是AXI5的简化版本,适合低带宽、低复杂度的应用场景,而AXI5则提供了高性能和灵活性的特性,适合复杂系统设计。注:写数据通道上的数据和信息被认为可以被从设备进行缓存的,也就是说,即使当前写数据通道上的信息发出去之后还没有收到从设备的相应之前,继续执行其他写事务的。写地址通道的时序与写数据通道的时序没有前后关系,可以提前,也可以同时,也可以在写数据之后发出。读数据通道上的数据间隔无要求,可以连续周期发出,也可以中间有间隔,看从设备的行为,但数据的前后顺序不能改变,按照地址依次传输。

2024-10-25 15:06:19 1107

翻译 经典论文1-缓存访存与优化(2)随机存取内存(RAM)

是Ulrich Drepper大佬的一篇神作,洋洋洒洒100多页,基本上涵盖了当时(2007年)关于访存原理和优化的所有问题。即使今天的CPU又有了进一步的发展,但是依然没有跳出这篇文章的探讨范围。只要是讨论访存优化的文章,基本上都会引用这篇论文。之后的篇章将对这篇文章进行翻译,以供大家参考。2 随机存取内存(RAM)

2024-10-15 15:01:29 282

翻译 经典论文1 - 缓存原理与优化(1)简介

是Ulrich Drepper大佬的一篇神作,洋洋洒洒100多页,基本上涵盖了当时(2007年)关于访存原理和优化的所有问题。即使今天的CPU又有了进一步的发展,但是依然没有跳出这篇文章的探讨范围。只要是讨论访存优化的文章,基本上都会引用这篇论文。之后的篇章将对这篇文章进行翻译,以供大家参考。首先介绍文档中的章节:本文主要面向软件开发人员,因为没有对硬件技术细节的实现进行详细的探讨,因此对硬件导向的读者来说并不太有用。但在我们进入实际内容之前,需要介绍一些基础知识,以便后续更好的理解存储相关内容。

2024-10-15 14:47:45 180

原创 CPU设计-- 缓存 - 番外篇1 缓存的发展历史

说白一点,当乱序读取内存数据的时候,内存的响应时间将变得更不可测,显然这是CPU“等不起”的,CPU就只能浪费指令周期,进行无谓的等待。等到Pentium-1/80586,也就是我们熟悉的奔腾系列,由于Pentium采用了双路执行的超标量结构,有2条并行整数流水线,需要对数据和指令进行双重的访问,为了使得这些访问互不干涉,于是L1 Cache被一分为二,分为指令Cache和数据Cache(大小都是8K),此时的L2 Cache还是在主板上,再后来Intel推出了Pentium Pro/80686,

2024-10-12 15:27:23 1288

转载 CPU设计-- 缓存入门篇6 TLB

今天介绍缓存的另一种存在形式,TLB是translation lookaside buffer的简称,实质上也是一种cache。首先,我们简单介绍下MMU的工作原理,64位系统一般都是3~5级。常见的配置是4级页表,就以4级页表为例说明。分别是四级页表,如下图所示。在硬件上会有一个叫做,它存储PGD页表的首地址。MMU就是根据页表基地址寄存器从PGD页表一路查到PTE,最终找到物理地址(PTE页表中存储物理地址)。页表基地址寄存器中存储了PGD页表,PGD。

2024-10-12 15:23:37 605

原创 CPU设计-- 缓存入门篇5 缓存的组织方式

例如上面的例子中,0x2000和0x4000映射物理地址0x8000的时候都采用nocache的方式,这样不通过cache的访问,肯定可以避免这种问题。当然是会cache hit,此时B进程就访问了错误的数据,B进程本来想得到物理地址0x3000对应的数据,但是却由于cache hit得到了物理地址0x2000的数据。是的,因为虚拟地址和物理地址对应的index是一样的。而针对同一个物理地址,index也是唯一的,因此加载到cache中也是唯一的cacheline,所以也不会存在别名。

2024-10-11 16:25:27 1171

原创 CPU设计-- 缓存入门篇4 缓存的分配和更新

cache的分配策略是指我们什么情况下应该为数据分配cache line,即什么时候将cache line从主存更新到cache中。cache的更新策略是指当发生cache命中时,写操作应该如何更新数据。cache分配策略分为读和写两种情况。1、分配策略(1) 读分配(read allocation)当CPU读数据时,发生cache缺失,这种情况下都会分配一个cache line,缓存从主存读取的数据。默认情况下,cache都支持读分配。即CPU发出一条读数据的操作,CPU会先从内部的。

2024-10-11 08:54:50 1353

原创 CPU设计-- 缓存入门篇3 缓存的映射方式

当我们访问0x40地址时,依然索引到cache中第0行cache line,由于此时cache line中存储的是地址0x00地址对应的数据,所以此时依然会cache缺失。因此,当我们根据地址中index位找到cache line后,取出当前cache line对应的tag,然后和地址中的tag进行比较,如果相等,这说明cache命中。因此,两路组相连缓存较直接映射缓存最大的差异就是:第一个地址对应的数据可以对应2个cache line,而直接映射缓存一个地址只对应一个cache line。

2024-10-10 10:34:38 977

原创 CPU设计-- 缓存入门篇2 缓存基本概念

这样,CPU就可以不间断的从cache中连续获取a[0][0]~a[0][63]了。但程序2的写法是,CPU获取完a[0][0]后,读的数据是a[1][0],明显不在上述的cache line中,这时候cache还需要从新从主存中获取一个cache line,其中包含了a[1][0]~a[1][63]。依次类推,每一次CPU想读下一个数据的时候,都需要cache重新从主存中获取数据,这也就没有体现出了cache line的作用了,时间都花费在了cache从主存中获取cache line上了。

2024-10-10 10:21:51 748

原创 CPU设计-- 缓存入门篇 1 什么是缓存

当我们需要运行一个进程的时候,首先会从磁盘设备(例如,eMMC、UFS、SSD、硬盘等)中将可执行程序load到主存中,然后开始执行。主存的特点就是容量很大,可以达到几十GB的容量,但CPU访问DDR的时间却要比寄存器慢几十倍的时间。底层技术的朋友来说,或许没有接触过缓存,毕竟对于程序员来说,是不太关心缓存的。今天,将带大家进入缓存的世界。试想:如果CPU想要执行A+B这条指令,则需要花费100多ns的时间从主存中拿取数据,然后再话几十ns的时间将结果写回到主存,则一来一回的代价对于CPU来说,太大了。

2024-10-10 10:09:49 406

原创 网络应用层概述 -- 概念与结构

1. 概念应用层,在集成的是7层模型中的表示层,会话层,应用层的总和,在TCP/IP三层模型中的最高层,其实现的协议包括TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet等作用: 每个应用层协议都是为了解决某一类应用问题,而问题的解决是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的。应用层的具体内容就是规定应用进程在通信时所遵循的协议。2 . 层次结构应用层的层次结构包括以下三种形式: (1)客户-服务器体系结构(client-serve.

2020-12-21 15:05:58 926

翻译 JPEG压缩算法的Python实现 -- 2 JPEG介绍

JPEG( Joint Photographic Experts Group)即联合图像专家组,首先这是一个组织,即ISO 和 IEC 联合图像专家组,成立于1986年,负责静态图像压缩标准的制定,该组织在1992年创造了一个静态图像压缩标准,即JPEG标准,同时,使用JPEG标准的图像成为JPEG图像,文件后缀名为.jpg或.jpeg,是最常用的图像文件格式。然后,JPEG 压缩是有损压缩,但这个损失的部分是人的视觉不容易察觉到的部分,它充分利用了人眼对计算机色彩中的高频信息部分不敏感的特点,同时具有较.

2020-12-18 08:43:19 3383 3

原创 JPEG压缩的Python实现过程 -- 1图像压缩概念

现如今互联网上绝大部分图片都使用了JPEG压缩技术,也就是大家使用的jpg文件,通常JPEG文件相对于原始图像,能够得到1/8的压缩比,如此高的压缩率是如何做到的呢?图像压缩是指什么呢?JPEG图像时如何进行压缩的的呢?图像编码有哪些方式呢?今天就带大家看一下图像压缩的知识。1 图像压缩咱们先解决第一个问题,为什么要压缩?可能很多人可能并没有一个直观上的认识,举个例子,一张800X800大小的普通图片,如果未经压缩,大概在1.7MB左右,而对于一张高清壁纸1920x1080分辨率的高清壁纸来说,..

2020-12-17 09:42:52 2520

ARM的缓存一致性协议 CHI 规范

ARM的缓存一致性协议 CHI 规范

2024-10-29

RISCV-interrupts-spec-1.0-中文

RISCV-interrupts-spec-1.0-中文

2024-10-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除