MicroBlaze IP核中的外设接口和缓冲器接口介绍

MicroBlaze IP核是Xilinx公司提供的一个嵌入式软核处理器,广泛应用于FPGA设计中。在MicroBlaze IP核中,外设接口和缓冲器接口是处理器与外部设备和内存交互的关键部分。

1 外设接口

MicroBlaze处理器中的AXI4 内存映射外设接口AXI4是一种在Xilinx FPGA设计中常见的通信协议,用于在处理器和内存或其他外设之间传输数据。

指令外设接口(M_AXI_IP:MicroBlaze提供了多种AXI4内存映射外设接口,这些接口可以作为32位或64位的主设备(master)来工作。每个接口在任何时候都只有一个未完成的事务(transaction),并且所有的事务都是按顺序完成的。指令外设接口是一个32位的主设备,仅执行单字(single word)的读访问。它总是被设置为使用AXI4-Lite的子集。

数据外设接口(M_AXI_DP):是一个32位或64位的主设备,执行单次的访问。默认情况下,它被设置为使用AXI4-Lite的子集,但当启用LWX和SWX指令的独占访问时,它可以被设置为使用AXI4。半字(halfword)和字节(byte)的写操作是通过设置适当的字节选通(strobes)来实现的。每个写交易都会等待M_AXI_DP_BVALID信号,以确保存储指令在完成之前数据已经被正确写入。

当启用MMU物理地址扩展(PAE)时,指令外设接口(M_AXI_IP)地址宽度可以在32-64位的范围内,这取决于C_ADDR_SIZE的参数值。

数据外设接口(M_AXI_DP)的地址宽度可以在32-64位的范围内,这取决于C_ ADDR_SIZE的参数值。

2 缓冲器接口

AXI4内存映射缓存接口可以根据缓存行长度和数据宽度参数实现32位、128位、256位或512位的主设备(masters)。而AXI一致性扩展(ACE)接口实现为32位主设备(masters)。

ACE是AXI协议的一个扩展,它提供了一套机制,使得多个处理器IP核和其他主设备能够以一种高效且一致的方式访问共享内存。ACE通过定义一组事务类型、信号和协议来管理多个主控之间的缓存一致性和内存访问。它支持五种状态的缓存模型,用于管理缓存行状态并确保数据一致性。

使用32位主机时,指令缓存接口

当使用32位主机时,指令缓存接口(M_AXI_IC 或 M_ACE_IC)可以执行突发读访问(burst read accesses),这意味着在单个请求中可以连续读取多个字(word)。可能的突发读访问长度包括4字、8字或16字。突发读访问的长度(即每次连续读取的字数)取决于缓存行(cache line)的长度。缓存行是缓存中存储数据的基本单位。

当使用更宽的主机接口(如128位、256位或512位)时,指令缓存接口只能执行单次读访问(single read accesses),即每次请求只读取一个数据块(这个数据块的大小取决于主机的位宽)。

当使用32位主机时,接口可以拥有多个未决事务。默认情况下,可能支持高达2个未决事务。当启用流缓存(stream cache)时,未决事务的数量可以增加。流缓存允许提前请求两个缓存行,这意味着在某些情况下,可以同时有5个未决事务。然而,如果设置了未决读操作的数量,它必须是一个2的幂次方。因此,在可以拥有5个未决事务的情况下,通常会将其设置为8个,因为8是大于5的最小2的幂次方。对于128位、256位或512位更宽的主机接口,指令缓存接口通常只支持单个未决事务。

参数 C_ICACHE_ALWAYS_USED 控制了如何访问内存位置,特别是与指令缓存(Instruction Cache)相关的内存范围。

当 C_ICACHE_ALWAYS_USED 为 1 时,缓存的内存范围总是通过 AXI4 或 ACE 缓存接口进行访问。

这意味着无论缓存是否由软件启用或禁用,访问缓存内存范围时都会使用缓存接口。

当 C_ICACHE_ALWAYS_USED 为 0 时:缓存的内存范围将通过 AXI4 外设接口进行访问。MSR(Machine Status Register)中的 ICE 位用于控制指令缓存的启用/禁用。当 ICE=0 时,指令缓存被禁用。

使用32位主机时,数据缓存接口

当使用32位主机时,数据缓存接口可以执行单个字(word)的访问,也可以执行突发访问(burst accesses),具体取决于缓存行的长度。突发访问的长度可以是4个字、8个字或16个字。

突发写访问(burst write accesses)仅在使用AXI4的写回缓存时执行。写回缓存是一种缓存策略,其中修改的数据首先被写入缓存,并在之后的某个时间点写回到主存中。如果没有使用写回缓存或使用了不同的缓存策略,则可能只执行单个字的写访问。

对于这些更宽的主机接口,数据缓存接口只执行单个访问,无论是读还是写。

未决事务是指在某个时间点内,接口已经开始但尚未完成的事务数量。在数据缓存接口中,这通常指的是正在等待响应的读写请求。

读取时:最多可以有2个未决事务。这意味着在读取操作之间,接口可以并行处理最多两个读取请求,而不会阻塞其他请求。

写入时:最多可以有32个未决事务。这意味着在写入操作之间,接口可以并行处理多达32个写入请求,而不会阻塞其他请求。

MicroBlaze是一个软处理器核,它必须维护一个有序的内存模型。这意味着在处理器看来,内存的读写操作必须按照程序中的顺序执行,即使底层硬件(如AXI4或ACE接口)可能使用不同的顺序来处理这些操作。AXI4和ACE接口为读写操作提供了单独的通道,即读操作和写操作可以在不同的通道上并行执行,而不会相互干扰。然而,这些接口本身并不保证读写操作的顺序性。允许有多达32个未决写事务可以显著提高性能。这是因为当处理器有多个写入请求时,它可以并行地发送这些请求,而不需要等待每个请求都完成后再发送下一个。这减少了处理器的等待时间,从而提高了整体的处理速度。

字、半字和字节的写入是通过设置适当的字节选通来执行的。

可以为LWX和SWX指令启用Exclusive访问。

C_DCACHE_ALWAYS_USED 是一个配置参数,通常用于描述硬件(如FPGA中的处理器或SoC)的数据缓存(Data Cache)行为。这个参数决定了数据缓存是否总是被用于访问特定的内存区域。

当 C_DCACHE_ALWAYS_USED 为 1 时:数据缓存总是被用于访问缓存内存范围。这意味着,无论软件是否禁用了缓存(例如,通过修改某个特定的内存状态寄存器MSR的DCE位),数据缓存都会被用来访问这部分内存。在这种情况下,内存访问通常通过AXI4或ACE缓存接口进行,因为这些接口支持缓存一致性和缓存管理功能。

当 C_DCACHE_ALWAYS_USED 为 0 时:数据缓存的使用是可选的,取决于软件配置和缓存状态。如果软件禁用了数据缓存(例如,通过设置MSR[DCE]=0),那么对缓存内存范围的访问将通过AXI4的外围接口(Peripheral Interface)进行,而不是通过缓存接口。使用外围接口意味着这些内存访问不会受到数据缓存的影响,即它们将绕过缓存直接访问物理内存。这可以用于确保某些内存操作的一致性,例如非缓存写或绕过缓存的读取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/30693.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索Selenium:通过JavaScript增强UI测试效率和效果

在自动化测试中,模拟用户的行为只是任务的一部分。许多时候,测试人员需要更多的控制和灵活性,以验证应用程序的功能和性能。Selenium WebDriver 提供了执行 JavaScript 代码的能力,这一特性为测试人员打开了新的可能性。本文将深入…

产品经理方法论

1、用户体验 5 要素 1,表现层是你拿到一个产品以后,视觉表现,配色,布局,排版等等 2,框架层,是交互层面的东西,比如,操作情况,刷新,页面跳转&…

ChatmoneyAI如狂风般席卷广告创意舞台,轻松闯荡财富之海!

本文由 ChatMoney团队出品 引言 在广告创意行业,创新和高效是赢得市场的关键。而我今天要分享的就是如何利用ChatmoneyAI这款强大的人工智能工具,打破创新难题,赚取丰厚收益。 让我告诉你一个小秘密,有客户曾在一个月内&#xf…

git merge(3个模式) 与 git rebase 图文详解区别

目录 1 git merge1.1 模式一:fast-forward(–ff)1.2 模式二:non-Fast-forward(–no-ff)1.3 模式三:fast-forward only(–ff-only) 2 git rebase3 区别 1 git merge git merge有好几种不同的模式 默认情况下你直接使用 git merge 命令&#x…

从boost库到时间戳

一、以问题引入 授权证书一般有到期时间的说法,公司测试同事在测试更新后的证书时,将系统时间调到了2050年,重启服务后发现各个进程的cpu占用率特别高;结合日志分析,发现这些进程 都在不停的刷heartbeat()的日志&#…

C++17并行算法与HIPSTDPAR

C17 parallel algorithms and HIPSTDPAR — ROCm Blogs (amd.com) C17标准在原有的C标准库中引入了并行算法的概念。像std::transform这样的并行版本算法保持了与常规串行版本相同的签名,只是增加了一个额外的参数来指定使用的执行策略。这种灵活性使得已经使用C标准…

AI 音乐大模型:创新的曙光还是创意产业的阴影?

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

JavaScript Window History

JavaScript Window History 简介 JavaScript 中的 window.history 对象提供了与浏览器历史记录交互的能力。这个对象是 window 对象的一个属性,允许开发者访问和操作用户在浏览器中的导航历史。通过 window.history,开发者可以实现页面后退、前进以及添加新的历史记录等功能…

有效的字母异位词--力扣242

有效的字母异位词 题目思路C代码 题目 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。s 和 t 仅包含小写字母。 示例 1: 输入: s “an…

字符串的相关函数

1.strcpy 字符串拷贝函数 头文件&#xff1a; #include <string.h> char *strcpy(char *dest, const char *src); 参数&#xff1a; const char *src&#xff1a;被拷贝字符串的首地址 char *dest&#xff1a; 拷贝到目标的首地址 返回值&#xff1a; …

云原生-k8s中的 Tab 自动补全功能

文章目录&#xff1a; 1、首先你需要安装bash-completion&#xff0c;能够自动补全 2、配置环境变量 3、生效此配置 1、首先你需要安装bash-completion&#xff0c;能够自动补全 yum -y install bash-completion2、配置环境变量 echo source <(kubectl completion b…

[面试题]Kafka

[面试题]Java【基础】[面试题]Java【虚拟机】[面试题]Java【并发】[面试题]Java【集合】[面试题]MySQL[面试题]Maven[面试题]Spring Boot[面试题]Spring Cloud[面试题]Spring MVC[面试题]Spring[面试题]MyBatis[面试题]Nginx[面试题]缓存[面试题]Redis[面试题]消息队列[面试题]…

RAG(检索增强生成)的演变:初级 RAG、高级 RAG 和模块化 RAG 架构

大型语言模型&#xff08;LLMs&#xff09;通过在自然语言任务及其它领域的成功应用&#xff0c;如 ChatGPT、Bard、Claude 等所示&#xff0c;已经彻底改变了 AI 领域。这些 LLMs 能够生成从创意写作到复杂代码的文本。然而&#xff0c;LLMs 面临着幻觉、过时知识和不透明、无…

磁力搜索器,解读新一代的搜索引擎方式,磁力王、磁力猫等引擎的异同及原理

最近国内几年&#xff0c;不依赖追踪服务器的磁力搜索开始流行&#xff0c;成为新的资源搜索的方式。 我们平常所说的磁力王&#xff08;jigecili.com)、磁力猫(yinghuacili.com)、bt磁力&#xff08;btcili.cn)、磁力狗最新版&#xff08;cilizhai.net)、磁力兔子、磁力宝、人…

基于ChatGPT的大型语言模型试用心得

近年来&#xff0c;ChatGPT这样的大型语言模型&#xff0c;它如同一颗冉冉升起的新星&#xff0c;迅速在商业、教育、娱乐等多个领域照亮了创新的天空&#xff0c;极大地革新了我们的工作与日常生活。 最近我发现一些国内用户也能自由访问的中文ChatGPT APP。这个平台不仅提供…

计算机网络知识点(五)

目录 一、简述什么是 MSL&#xff0c;为什么客户端连接要等待2MSL的时间才能完全关闭 二、简述 SYN flood&#xff0c;如何防止这类攻击 三、简述TCP 粘包和拆包 四、简述TCP 与 UDP 在网络协议中的哪一层&#xff0c;他们之间有什么区别&#xff1f; 五、简述从系统层面上…

个人制作软件是否需要代码签名证书?

在数字化时代&#xff0c;软件安全已成为企业和个人用户关注的焦点。为了保护软件免受恶意篡改和仿冒&#xff0c;代码签名证书应运而生。代码签名证书是一种数字证书&#xff0c;用于对软件进行数字签名和加密&#xff0c;以确保软件在传输过程中的安全性和可靠性。本文将详细…

【西瓜书】第一二章笔记

耽于学业&#xff0c;选择速记&#xff0c;后续再补。本笔记质量不高&#xff0c;敬请谅解。 关键词&#xff1a; 监督学习&#xff08;Supervised Learning&#xff09;&#xff1a;一种机器学习范式&#xff0c;其中模型在带有标签的数据集上进行训练。标签提供了正确的答案&…

makefile追加warning日志

在Makefile中&#xff0c;你不能直接“追加”warning日志到构建过程中&#xff0c;但你可以通过几种方式在构建时产生额外的警告或消息。以下是一些常用的方法&#xff1a; 使用echo或printf命令&#xff1a; 在Makefile的规则中&#xff0c;你可以使用echo或printf命令来输出警…

10招教你玩转Python循环优化

更多Python学习内容&#xff1a;ipengtao.com 在Python编程中&#xff0c;循环是最常见的控制结构之一。尽管Python的循环语法简单明了&#xff0c;但在处理大量数据或进行复杂计算时&#xff0c;循环可能会成为性能瓶颈。本文将介绍10种加速Python循环的方法&#xff0c;帮助在…