芯片工程师求职题目之CPU篇(3)

news2024/11/24 1:17:08

1. 什么是cache(缓存)?它的工作原理是什么?

Cache是少量的快速内存。它位于主存储器和中央处理器之间。每当CPU请求memory位置的内容时,首先检查cache中是否有此数据。如果数据存在于cache中,CPU直接从cache中获得数据。这是更快的,因为CPU不需要去memory拿数据。如果数据不在cache中,则从memory读取一块内容到cache中,然后传递所需的数据块给CPU。当一个地址在cache中被查找时,如果缓存中包含该地址的内容,它就被称为cache命中。反之称之为cache丢失。

2. 在有cache使能的机器上,在链表(linked list)中搜索数据与在向量(vector)中搜索数据的程序的性能会有差异吗?

链表是一种将元素存储在非连续内存位置的数据结构,而向量是一种将元素存储在连续位置的数据结构。

对于使用cache的设计:如果一个内存位置存在于cache中,那么很有可能其它连续字节也会存在于cache中,因为从主存到cache的任何读取通常都是根据cache line(通常是32或64或128字节)进行的。正因为如此,在有cache的机器上,搜索向量比搜索链表要快。

3. 将memory映射到cache的不同方法有哪些?比较每种方法的优缺点。

有3种主要的映射技术用于映射memory和cache的内容。在每一种映射中,memory和cache被话费为很多块(cache line,通常为64字节大小),这是用于映射的最小大小。

  • 直接映射:在直接映射中,memory中每个块只能映射到cache的一个特定块中。这是所有映射中最简单的,通过知道memory地址,可以很容易计算出cache中可能位置,并且仅与单个位置的标记位进行比较就可以算出是否命中cache。这种映射的缺点是,即使cache可能未满,但如果memory访问是在同一块中的地址,则可能导致更多的替换并且效率不高。
  • 全相联映射:在全相联映射中,任何memory块都可以映射到cache中的任何块。这种方式的优点是cache的所有位置都可以被充分利用,命中率高。但是成本高,查找是否命中最慢。
  • 组相联映射:它是直接映射和全相联映射的折中,在组相联映射中,cache块被分为若干个块集合。memory地址与cache地址的映射转换有两部分,组地址是按直接映射方式,按地址进行访问,而块地址是采用全相联方式,按内容访问。这种映射的优点是cache块的冲突概率比较低,块的利用率大幅度提高,块失效率明显降低。但是实现难度和造价都要比直接映射高。不过,现在这种映射在cache实现中使用最为广泛。

4. 4路组相联映射的cache的总大小为256KB。如果每个cache块(cache line)的大小是64字节,那么cache中有多个集合(cache set)?假设地址位宽为32-bit,需要多少地址位作为标签位(tag)

Cache的块总数 = (256*1024)/64 = 4096。因为cache是4路组相联,集合数 = 4096/4 = 1024。给定一个32位的地址(address)和64字节的cache块,address[5:0]用于索引cache块内部的字节,address[15:6]被用来找出哪一组地址映射。剩余的address[31:16]用作标签位,也就是16位。

5. Write-through和write-back的cache区别是什么?各有什么优缺点?

Write-through cache:在write-through cache中,每个对cache的写操作同时也写入memory。这很容易设计,因为相对于cache而言,memory总是最新的,但缺点会经常占用memory带宽。

Write-back cache:在write-back cache中,每次对cache的写操作都只写到cache中。写memory被延迟,直到cache块被替换掉。Write-back cache在memory带宽使用上更友好,因为数据只在需要时才写回memory。但如果系统中有多个cache可以缓存相同的地址,那么维护一致性的数据就会变得复杂,因为内存可能并不总是有最新的数据。

6. Inclusive cache和exclusive cache有什么不同?

Cache的inclusive和exclusive属性适用于具有多个cache级别的设计,例如包含L1、L2和L3 cache。

如果L1 cache中存在的所有内容被设计为也存在于L2 cache中,则L1 cache称为inclusive cache。如果保证所有的内容最多只存在于一个L1或L2 cache中,而不同时存在于两个cache中,那么这些cache就称为exclusive cache。Exclusive cache的优点是多级cache可以一起存储更多的数据。Inclusive cache的优点是,在多处理器系统中,如果必须从处理器的cache中删除一个cache块,则只需要在L2 cache中检查它就行,而对于exclusive cache,则必须检查它是否存在于L1和L2 cache中。

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

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

相关文章

必备工具:Postman Newman 详解

目录 Postman Newman 是什么? Postman Newman 的作用 如何使用 Postman Newman? 第一步:安装 Node.js 第二步:全局安装 Newman 第三步:导出集合或环境变量为 JSON 格式 第四步:使用 Newman 运行测试…

IDEA部署配置Maven项目教程,IDEA配置Tomcat(2019.3.3)

一、前言 当涉及到软件开发和项目管理时,使用一个可靠的构建工具是非常重要的。Maven是一个广泛使用的构建工具,它为Java项目提供了一种简化的构建过程和依赖管理。 在本文中,我们将探讨如何部署Maven并开始使用它来构建您的项目。我们将介绍…

快递管理系统springboot 寄件物流仓库java jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 快递管理系统springboot 系统有1权限:管…

205、仿真-51单片机直流数字电流表多档位切换Proteus仿真设计(程序+Proteus仿真+原理图+流程图+元器件清单+配套资料等)

毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、硬件设计 二、设计功能 三、Proteus仿真图 四、原理图 五、程序源码 资料包括: 方案选择 单片机的选择 方案一:STM32系列单片机控制,该型号单片机为LQFP44封装,内部资源…

Apache JMeter:完全指南

Apache JMeter 是一款开源的性能测试工具,可以用于测试 Web 应用程序、FTP 服务器、数据库等各种类型的服务器。本文将以 JMeter 5.5 为例介绍 JMeter 的使用方法。 下载和安装 由于 JMeter 是使用 Java 开发的,因此在运行之前必须先安装 JDK。您可以在…

【Python常用函数】一文让你彻底掌握Python中的toad.quality函数

任何事情都是由量变到质变的过程,学习Python也不例外。只有把一个语言中的常用函数了如指掌了,才能在处理问题的过程中得心应手,快速地找到最优方案。本文和你一起来探索Python中的toad.quality函数,让你以最短的时间明白这个函数…

Multi-object navigation in real environments using hybrid policies 论文阅读

论文信息 题目:Multi-object navigation in real environments using hybrid policies 作者:Assem Sadek, Guillaume Bono 来源:CVPR 时间:2023 Abstract 机器人技术中的导航问题通常是通过 SLAM 和规划的结合来解决的。 最近…

Michael.W基于Foundry精读Openzeppelin第25期——IERC1820Registry.sol

Michael.W基于Foundry精读Openzeppelin第25期——IERC1820Registry.sol 0. 版本1. IERC1820Registry.sol2. 官方实现合约代码解读2.1 ERC1820Registry 0. 版本 [openzeppelin]:v4.8.3,[forge-std]:v1.5.6 1. IERC1820Registry.sol Github:…

【Linux初阶】system V - 共享内存

文章目录 前言一、共享内存初识1.共享内存的原理2.理解共享内存3.共享的内存的概念 二、共享内存函数1.shmget函数2.shmat函数3.shmdt函数4.shmctl函数 三、共享内存的查看方法及其特征四、共享内存的代码实现五、共享内存优缺点分析1.共享内存的优点2.共享内存的缺点 六、共享…

uni-app弹窗列表滚动, 弹框下面的内容也跟随滚动解决方案

滑动弹窗里的列表,弹框下面的内容也会跟着滑动,导致弹窗中的列表不能正常滚动 1.弹窗组件代码,需要在最外层的view中加入touchmove.stop.prevent"moveHandle",且弹窗中需要滚动的列表要使用scroll-view标签包裹起来&…

学生课堂行为识别教学质量评估 yolov7

学生课堂行为识别教学质量评估系统利用教室安装的摄像头,学生课堂行为识别教学质量评估系统对学生的表情状态、课堂表现和互动行为进行全面监测。对学生的参与度、专注度、互动质量等进行评估,为教师提供有关教学效果的实时反馈。可以为教师提供个性化的…

深谙封装之道:requests再封装,更完美的请求函数

这集我们来讲一个requests的封装函数。 作为一个程序员,我们经常会追求代码的复用性,所以就很多三方库,让我们不重复造轮子。但三方库也不是一步到位的,真正要完成目标还是要动动手的,把工具组装起来。相信每个人都封…

win10在vmware15中安装macos10.13系统

第一步、安装vmware版本信息如下 第二步、下载unlocker-main和darwin.iso放到安装文件夹 第三步、管理员身份运行win-install.cmd 第四步、运行vmware新建虚拟机 第五步、启动新创建的虚拟机macOS 10.13并选择语言 第六步、选择磁盘工具抹掉磁盘 第七步、格式化完成后退出磁盘工…

dialogbot:开箱即用的对话机器人解决方案,涵盖问答型对话、任务型对话和聊天型对话等多种场景,为您提供全方位的对话交互体验。

dialogbot:开箱即用的对话机器人解决方案,涵盖问答型对话、任务型对话和聊天型对话等多种场景,支持网络检索问答、领域知识问答、任务引导问答和闲聊问答,为您提供全方位的对话交互体验。 人机对话系统一直是AI的重要方向&#xf…

二叉搜索树K和KV结构模拟

一 什么是二叉搜索树 这个的结构特性非常重要,是后面函数实现的结构基础,二叉搜索树的特性是每个根节点都比自己的左树任一节点大,比自己的右树任一节点小。 例如这个图, 41是根节点,要比左树大,比右树小&…

数据结构-队列的实现(C语言版)

前言 队列是一种特殊的线性表,它只允许在一端对数据进行插入操作,在另一端对数据进行删除操作的特殊线性表,队列具有先进先出的(FIFO)的 特性,进行插入操作的一端称为队尾,进行删除操作的一端称…

关于Android Studio Http Proxy设置

对敌人最大的蔑视就是沉默。--鹿丸 我们使用Android Studio 开始构建的时候会有卡顿的情况,甚至死机,也就是所谓的【android studio】构建卡住问题,如果依赖库类都是国内的,检查是否开启了代理 这个地方选择下面的自动代理 国内…

Redis_事务操作

13. redis事务操作 13.1事务简介 原子性(Atomicity) 一致性(Consistency) 隔离性(isolation) 持久性(durabiliby) ACID 13.2 Redis事务 提供了multi、exec命令来完成 第一步,客户端使用multi命令显式地开启事务第二步,客户端把事务中要执行的指令发…

WebRTC音视频通话-实现GPUImage视频美颜滤镜效果iOS

WebRTC音视频通话-实现GPUImage视频美颜滤镜效果 在WebRTC音视频通话的GPUImage美颜效果图如下 可以看下 之前搭建ossrs服务,可以查看:https://blog.csdn.net/gloryFlow/article/details/132257196 之前实现iOS端调用ossrs音视频通话,可以查…

KNN分类器、神经网络原理基础与代码实现

急切学习 两步:(1)归纳 (2)演绎 例如:贝叶斯分类器、决策树分类等等。 惰性学习 将训练数据建模过程推迟到需要对样本分类时(直观理解:死记硬背,记住所有的训练数据&…