当前位置: 首页 > news >正文

Linux map type uncache 和 write combine区别

文章目录

  • 前言
  • 一、定义
  • 二、隐含区别
  • 总结


前言

这段时间被Map Cache Type坑了一次。
GPU的PCI bar地址map成uncache 的还是 write combine?


一、定义

uncache(uc) : map后,CPU读写不经过Cache
write combine(wb): map后,CPU读写同样不经过Cache,但是和Cache之间有一块buffer,以便于将多次连续小读写合成一次大读写

这是互联网上能查到的定义,但是实际应用并没有给出结论,什么情况下用什么,无脑用uc肯定是不会出错的。

二、隐含区别

如果我要往外设的寄存器进行读写,如果是uncache的,这是正确的做法,不会有什么潜在的问题。
那如果是write combine的会发生什么?
寄存器我们知道有FIFO,我们读写设备的FIFO(例如串口),我们每读写一次,串口会弹出/记录数据 同时改变FIFO寄存器的值,此时读写次数会影响到设备行为/寄存器的值。
而write combine会将多次连续小读写合成一次大读写,甚至是读写重排,改变了读写的次数/行为,对于类似读写敏感的寄存器会出现不可预知的错误。

如果我要在vram中进行读写
那如果是write combine的会发生问题吗?
首先给出结论:不会
vram并不会像寄存器对读写敏感,像frame buffer以及gart table都没问题。

(有些人可能以为gart table必须得用uncache,实际上write combine就行了。)


总结

寄存器部分 map成uncache,而类似vram对读写顺序以及次数不敏感的map成write combine用于提升读写性能。

小问题,如果我的寄存器也对读写不敏感怎么办,例如配置寄存器,这种情况该用什么?

http://www.lryc.cn/news/155836.html

相关文章:

  • 【业务功能篇93】微服务-springcloud-多线程-异步处理-异步编排-CompletableFutrue-实战运用
  • 哈希的应用——位图
  • 2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书对外经济贸易大学图书馆
  • 合并两个有序链表(每日一题)
  • React Hooks总览
  • 风向变了!智能汽车何以「降本」
  • 后端面试话术集锦第 十五 篇:java线程面试话术
  • cocos creator配置终端调试
  • 达梦类型转换问题-float转换为varchar
  • 怎么用postman连接websocket
  • 需求分析入门
  • 攻防世界-php_rce
  • 最小生成树Kruskal、Prim算法C++
  • 系统架构设计师-计算机系统基础知识(2)
  • 二叉树的介绍
  • 数据结构与算法复杂度介绍
  • CentOS 安装蒲公英
  • 英语语法基础--思维导图
  • Android泛型详解
  • C++信息学奥赛1178:成绩排序
  • 【计算机视觉 | 目标检测】目标检测常用数据集及其介绍(七)
  • 100天精通Golang(基础入门篇)——第20天:Golang 接口 深度解析☞从基础到高级
  • ESXi 6.7添加螃蟹2.5g网卡支持
  • 机器学习笔记之最优化理论与方法(四) 凸函数:定义与基本性质
  • 【Git】git tag 查看版本号 | 删除本地 | 删除远程仓库| 批量删除
  • thinkphp:数据库查询,嵌套别的表的查询(别的表做子查询)
  • 《Linux 系统命令及Shell脚本实践指南》
  • 代码随想录算法训练营第三十八天 | ● 理论基础 ● 509. 斐波那契数 ● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯
  • Java分别用BIO、NIO实现简单的客户端服务器通信
  • React Portals