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

《计算机原理与系统结构》学习系列——处理器(下)

系列文章目录

目录

  • 流水线冒险
    • 数据冒险
      • 数据相关与数据冒险
      • 寄存器先读后写
      • 旁路
      • 取数使用型冒险
      • 阻塞
    • 控制冒险
      • 分支引发的控制冒险
      • 假设分支不发生
      • 动态分支预测
      • 双预测位动态分支预测
      • 缩短分支延迟
      • 带冒险控制的单周期流水线图
  • 异常
    • MIPS中的异常
    • MIPS中的异常处理
    • 另一种异常处理机制
    • 非精确异常
    • 精确异常
    • 流水线中的异常
    • 带异常处理的流水线
    • 异常的性质
    • 多个异常处理
  • 中断
    • 中断系统
    • 中断的基本类型
      • 中断的产生方式
      • 中断处理方式
      • 是否屏蔽
      • 中断源
      • 中断响应方式
      • 中断重数
    • 中断源的种类
    • 中断请求方式
      • 请求结构
      • 中断请求标记 INTR
      • 禁止中断和中断屏蔽
        • 禁止中断
        • 中断屏蔽
        • 中断判优
    • 在这里插入图片描述
    • 中断响应
    • 中断处理程序入口
    • 中断处理及中断返回
    • 中断嵌套
    • 中断屏蔽


流水线冒险

数据冒险


数据相关与数据冒险

在这里插入图片描述

  • $ v0寄存器($ 2)被五条指令使用,其中,sub指令将结果-20写入$v0另外4条指令预期读取数据-20与sub指令数据相关
  • 但是,sub指令在CC5才将-20写入$ v0,and和or在CC3/CC4就要读取-20,此时$v0的值还是10,于是产生数据冒险(data hazard)

寄存器先读后写

  • 约定寄存器前半拍写后半拍读,在CC5中,sub先写结果-20,再由add读取,可避免一次冒险

旁路

在这里插入图片描述

  • 实际上,and和or要使用的数据-20在CC3就已经由ALU计算生成,我们可以从EX/MEM寄存器将数据直接传给and指令的ALU
  • 从MEM/WB寄存器将数据传给or指令的ALU,这种跳过寄存器写回、直接从流水线寄存器取得数据的方法称为转发(forward)或旁路(bypass)
  • 其中,and指令将sub的ALU运算结果作为ALU的rs输入,形成ALU-ALU旁路
    • 1a. EX/MEM.RegisterRd = ID/EX.RegisterRs
  • or指令将sub的ALU运算结果(MEM级),作为ALU的rt输入,称为MEM-ALU旁路

配备两种旁路,则称为全旁路

取数使用型冒险

考虑指令序列
lw $t0,12( $s0 )
add $t1, $t0 , $t0

在这里插入图片描述

下一条指令使用lw的目标寄存器rt时,访存读出的数据在MEM级才产生,尝试添加旁路,发现数据流向和时间相反,对这种取数-使用型数据冒险,必须在lw指令后添加一个气泡/阻塞周期


阻塞

add 指令已经执行IF和ID周期,我们并不是真的塞入一条空指令nop,而是把add的控制信号全部清零、使其不改变任何状态单元,将其变为空指令,同时将add指令的地址重新写回PC(PC+4-4),在lw的EX周期重新执行add指令阻塞由冒险检测单元控制实现



控制冒险

分支引发的控制冒险

在这里插入图片描述
分支指令beq在MEM级才能决定是否分支,此前beq后的三条指令都已被取到流水线分支成功执行了,分支失败才应该执行的指令就产生了分支冒险,是一种典型的控制冒险(control hazard)


假设分支不发生

当我们猜测每个分支语句发生的概率很小,如循环中用于退出循环的beq reg1,$zero,Exit指令,我们可以采取总是假设分支不发生的策略,执行那些紧跟在beq后的指令,跳过分支,如果预测失败不产生额外开销,且预测成功率能达到50%,就能减少减少50%的分支冒险开销
(也有总是假设分支发生)


动态分支预测

上面这种方法只是简单的假设全部分支都不发生,是一种静态分支预测

通过向数据通路添加称为分支预测缓存(分支历史记录)的小型索引存储器区,保存近几次分支的记录,进而预测分支是否发生,这样的策略称为动态分支预测,动态分支预测的准确率通常高达90%

考虑一个循环,进行9次循环分支(分支发生)后退出(分支不发生)
使用单预测位(初始化为表示不分支的0)会产生两次预测错误:

  • 进入第1次循环后,要继续循环分支,然而预测位为0,预测不分支,产生一次预测错误
  • 进入第9次循环后,不再循环分支,然而预测位为1,预测分支,产生第二次预测错误

双预测位动态分支预测

在这里插入图片描述

使用双预测位时,则只会产生一次预测错误,两个预测位表示0~3这4个数,初始化为0

  • 分支一次+1且不超过3,不分支一次-1且不超过0
  • 当预测位为0、1时,预测分支不发生
  • 当预测位为2、3时,预测分支发生

缩短分支延迟

在此前的分析中,beq在MEM级才能决定是否分支

  • 如果能将整个分支过程提前到EX级,就能将分支错误时的开销从3条指令(3个周期)缩短到2条指令(2个周期)
  • 提前到ID级,就能将分支错误开销进一步降低到1条指令

这种缩短分支延迟的策略需要提前2件事:
1.计算分支目标地址 2.判断分支条件

  • PC+4的值在IF周期已经计算出来,完全可以在ID周期计算出分支目标地址
  • 在ID级从寄存器堆取出rs和rt的数据,送入一个相等检测单元
  • 判断相等以后,即可向控制PCSrc的多选器发出信号,将分支目标地址写回PC,在ID级完成分支

如果beq上一条指令是R型指令,且需要比较R型指令的运算结果,则在R型ALU结果旁路到IF/ID寄存器的基础上,还需要将beq指令阻塞一个周期
如果beq上一条指令是lw指令取得的数据,需要阻塞2个周期


带冒险控制的单周期流水线图

在这里插入图片描述

  • 支持旁路的旁路单元
  • 支持阻塞的冒险检测单元
  • 用于在ID级比较两数是否相等的相等检测单元


异常

MIPS中的异常

在MIPS中系统中,中断、陷阱、系统调用和任何可以中断程序正常运行的情况都称为异常

  • 外部事件——中断
  • 内存翻译异常
  • 程序或硬件探测到的错误
  • 数据完整性错误
  • 系统调用和陷入

MIPS中的异常处理

  • 保存出错指令
    • 异常程序计数器EPC
    • EPC寄存器用于指向异常发生时指令跳转前的执行位置,当异常时,返回这个地址 继续执行
  • 保存问题产生的原因
    • 状态寄存器 Cause register
    • 我们假定一位:0表示未定义指令,1表示算数溢出
  • 异常处理系统跳转至统一的入口地址 8000 0180

另一种异常处理机制

  • 向量中断
    • 由异常原因决定中断控制的转移地址
  • 例如:
    • 未定义指令: 8000 0000
    • 算数溢出: 8000 0180
  • 指令可能是:
    • 处理中断,跳转到实际的中断处理程序

非精确异常

  • 常规异常一般为软件的异常
  • 异常发生时,跳转前最后被执行的指令是其MEM阶段刚好被执行完的那条指令。受影响指令是EX阶段刚好执行完的那条指令。
  • 仅仅是停止流水线并保存状态,包括产生异常的原因:
    • 哪条(些)指令产生了异常
    • 哪些可以完成或清除,可能需要“手动”完成
    • 对于复杂多发无序的流水线,此方法是不可行的
  • 而中断一般为硬件异常,中断可以是芯片内部,也可以是芯片外部触发产生,硬件简单,但处理软件复杂

精确异常

  • 在运行流程中没有任何多余效应的异常
    • 即当异常发生时,受影响指令之前的指令被完全执行,而受影响指令及后面的指令还没开始执行
  • 如果受影响指令在分支延迟时间片中,则硬件自动处理EPC,在重新执行分支指令时,分支延迟时间片中的指令会被再执行一次
  • 精确异常的实现对流水线的流畅性是有一定的影响的,有助于保证软件设计上不受硬件实现的影响
  • 但异常太多,系统执行效率就会受到影响

流水线中的异常

  • 控制冒险的另一种形式
  • 假设加法指令add $1,$2,$1在执行阶段产生了算术溢出
    • 防止$1被破坏
    • 完成前面的指令
    • 清除add和后面的指令
    • 设置Casue和EPC寄存器的值
    • 把控制转交给异常处理程序
  • 类似于分支预测错误的情形
    • 使用许多相同的硬件

带异常处理的流水线

在这里插入图片描述

异常的性质

  • 可重新执行的异常
    • 流水线可以先清除这条指令
    • 在异常处理完后再重新执行这条指令
      • 从头开始取指和执行
  • 将导致异常的指令地址PC保存到EPC中
    • 找到引起异常的指令
    • 实际上保存的是PC+4
      • 异常处理例程必须调整,从保存的地址中减去4

多个异常处理

  • 流水线重叠执行多条指令
    • 在一个时钟周期内可能发生多个异常
  • 简单方法:从最早发生异常的指令开始处理异常
    • 清除后续的所有指令
    • 精确异常
  • 复杂的流水线中
    • 每周期执行多条指令
    • 乱序的完成时间
    • 保持精确异常处理非常困难


中断

中断系统

  • 当设备准备好或发生故障时
    • 控制器向CPU发出中断申请
  • 中断类似于异常
    • 但对指令执行来说,中断是异步的
    • 能够在指令之间调用处理程序
    • 中断状态通常能指出中断设备
  • 中断优先级
    • 更急迫需要的设备赋予更高的优先级
    • 能够中断一个低优先级的中断处理程序

中断的基本类型

中断的产生方式

  • 强迫中断:由某种随机产生的紧急事件引发的中断
  • 自愿中断:由程序中事先安排好的中断指令引发

中断处理方式

  • 程序中断:CPU响应中断后,转去执行相应的中断处理程序
  • 简单中断(DMA方式):CPU响应中断后,不执行中断处理程序,只是让出几个总线周期给DMAC完成DMA操作

是否屏蔽

  • 非屏蔽中断:优先级高,用于应急处理
  • 可屏蔽中断:优先级低,用于一般外设传送

中断源

  • 内中断:由CPU内部软硬件原因引发,如单步中断
  • 外中断:CPU以外的部件引发

中断响应方式

  • 向量中断
    • 将所有的中断处理程序的入口地址(第一条指令的地址)排成一张表,称为中断向量表
    • 在中断响应时,CPU通过这张表找到各个中断处理程序的入口地址
  • 非向量中断
    • 中断源不提供中断服务程序的入口地址,而通过软件查询的方法得到

中断重数

  • 单重中断:在CPU执行中断服务程序过程中不能再被打断
  • 多重中断(中断嵌套):在执行某个中断服务程序的过程中,CPU可去响应级别更高的中断请求

中断源的种类

① 由外围设备引起的中断要求CPU介入I/O操作,例如:
* 慢速设备的缓冲寄存器准备好接收或发送数据
* 信息块传送的前、后处理
* 设备的启动或非数据控制动作(如磁带、磁盘定位)的完成
* I/O的任一环节出错等
② 由运算器产生的中断。
③ 由存储器产生的中断。
④ 控制器产生的中断。
⑤ 过程控制产生的中断。
⑥ 时钟定时中断。
⑦ 电源故障中断。


中断请求方式

请求结构

独立请求线

  • 可直接识别中断源
  • 中断请求线数目有限
    在这里插入图片描述
    公共请求线
  • 通过软硬件识别中断源
  • 中断源数目可以扩充
    在这里插入图片描述

二维结构

  • 同级别采用相同请求线
  • 不同级别采用不同请求线
    在这里插入图片描述

中断请求标记 INTR

一个请求源对应一个INTR中断请求标记触发器
多个INTR组成中断请求标记寄存器
在这里插入图片描述

禁止中断和中断屏蔽

禁止中断
  • 产生中断源后,由于某种条件的存在,CPU不能中止现行程序的执行,称为禁止中断
  • 一般在CPU内部设有一个**“中断允许”触发器**。该触发器置“1”状态,才允许中断源等待CPU响应;该触发器被清除,则不允许所有中断源申请中断
  • “中断允许”触发器通过**“开中断”、“关中断”**指令来置位或复位
中断屏蔽
  • 当产生中断请求后,用程序方式有选择地封锁部分中断,而允许其余的中断仍得到响应,称为中断屏蔽
  • 实现方法是:
    • 为每一个中断源设置一个中断屏蔽触发器来屏蔽该设备的中断请求
    • 具体来说,用程序方法将该触发器置“1”, “0”
中断判优
  • 按中断性质和处理的轻重缓急进行排队
    • CPU现行程序与中断请求之间 :
      • 现行程序优先级低于中断请求优先级,CPU可以响应中断请求
    • 各中断请求之间
      • 硬件排队方式
        • 优先级高的自动封锁优先级低的中断请求
        • 速度快,成本高,难于修改
      • 软件查询方式
        • 查询顺序可通过编程改变,灵活
        • 查询、判优靠程序实现,占用CPU时间,速度慢

硬件实现(排队器)

在这里插入图片描述
软件实现(程序查询)

在这里插入图片描述


中断响应

  • 保存断点
    • 入栈或存入指定内存单元
  • 关中断
    • 防止中断响应过程被打断
  • 形成中断服务程序入口

由中断隐指令实现:并不是真正的指令,由硬件直接实现的中断响应过程中的基本操作
在这里插入图片描述



中断处理程序入口

  • 硬件方法(向量中断):
    • 硬件自动形成中断处理程序的入口地址(中断向量)
    • 向量地址通常有两种情况:
      • 向量地址是中断服务程序的入口地址
        • CPU不需要再经过处理就可以进入相应的中断服务程序
        • 适合于中断源比较少的情况。
      • 向量地址是中断向量表的指针
        • 中断源给出的向量地址是中断服务程序入口地址的地址。例:8086中断系统

在这里插入图片描述在这里插入图片描述

  • 软件查询法:八个中断源 1,2,… 8 按降序排列
    在这里插入图片描述


中断处理及中断返回

  • 开中断
    • 允许中断嵌套
  • 中断服务
    • 根据中断源的要求进行具体的服务操作
  • 关中断并恢复现场
    • 防止受干扰,先关中断;然后从堆栈弹出原现场信息
  • 开中断
    • 由于中断程序的插入时随机的,无法在返回原来的程序之后开中断
    • 必须在中断返回之前,由中断服务程序执行开中断指令
  • 中断返回
    • 从堆栈中弹出断点地址,便可从服务程序返回到原来程序的断点处执行原程序
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述


中断嵌套

  • 概念
    • 一个系统中有多个中断源
    • 若CPU正在某中断服务程序时
    • 有更重要的中断源申请中断,则CPU就中止正在服务的程序,转为新的中断源服务
    • 在处理完毕后,再返回到被中止的服务程序,直至处理完,返回主程序
  • 中断嵌套的关键
    • 中断处理程序中开中断
    • 利用堆栈保证中断的逐级返回
      在这里插入图片描述


中断屏蔽

  • 中断优先级包括两层含义
    • 响应优先级
      • 多个中断源同时发出中断请求时,由硬件排队线路决定的CPU的响应次序,称为硬排队
    • 处理优先级
      • CPU在处理中断的过程中,优先执行哪个中断服务程序的次序
      • 可以由中断屏蔽码来改变优先级顺序,称为软排队
  • 中断屏蔽
    • 通过改变中断屏蔽码来改变中断优先级的技术

屏蔽字
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

《计算机原理与系统结构》学习系列——处理器(下)

系列文章目录 目录 流水线冒险数据冒险数据相关与数据冒险寄存器先读后写旁路取数使用型冒险阻塞 控制冒险分支引发的控制冒险假设分支不发生动态分支预测双预测位动态分支预测缩短分支延迟带冒险控制的单周期流水线图 异常MIPS中的异常MIPS中的异常处理另一种异常处理机制非精…...

JDK新特性(8-21)数据类型-直接内存

目录 Jdk 新特性 JDK 8 特性 默认方法实现作用:可以使接口更加灵活,不破坏现有实现的情况下添加新的方法。 函数式接口 StreamAPI JDK 9 特性 JDK 10 特性 JDK 11 特性 JDK 14 特性 JDK 17 特性 JDK 21 特性 数据类型 基本数据类型和引用数据类型的区别…...

003-Kotlin界面开发之声明式编程范式

概念本源 在界面程序开发中,有两个非常典型的编程范式:命令式编程和声明式编程。命令式编程是指通过编写一系列命令来描述程序的运行逻辑,而声明式编程则是通过编写一系列声明来描述程序的状态。在命令式编程中,程序员需要关心程…...

QT pro项目工程的条件编译

QT pro项目工程的条件编译 前言 项目场景:项目中用到同一型号两个相机,同时导入两个版本有冲突,编译不通过, 故从编译就区分相机导入调用,使用宏区分 一、定义宏 在pro文件中定义宏: DEFINES USE_Cam…...

深度学习之经典网络-AlexNet详解

AlexNet 是一种经典的卷积神经网络(CNN)架构,在 2012 年的 ImageNet 大规模视觉识别挑战赛(ILSVRC)中表现优异,将 CNN 引入深度学习的新时代。AlexNet 的设计在多方面改进了卷积神经网络的架构,…...

部署Prometheus、Grafana、Zipkin、Kiali监控度量Istio

1. 模块简介 Prometheus 是一个开源的监控系统和时间序列数据库。Istio 使用 Prometheus 来记录指标,跟踪 Istio 和网格中的应用程序的健康状况。Grafana 是一个用于分析和监控的开放平台。Grafana 可以连接到各种数据源,并使用图形、表格、热图等将数据…...

结合 Spring Boot Native 和 Spring Boot 构建高性能服务器架构

随着云计算和微服务架构的普及,开发者们不断寻求提高应用性能和用户体验的解决方案。Spring Boot Native 的出现,利用 GraalVM 的原生映像特性,使得 Java 应用的启动速度和资源占用得到了显著改善。本文将深入探讨如何将前端应用使用 Spring …...

ArcGIS影像调色(三原色)三原色调整

本期主要介绍ArcGIS影像调色(三原色) ArcGIS影像调色(三原色),对比度、亮度、gamma。红绿蓝三原色调整。 视频学习 ArcGIS影像调色(三原色)...

SQLite从入门到精通面试题及参考答案

目录 SQLite 是什么? SQLite 的优点有哪些? 轻量级与易于部署 零配置和低维护成本 良好的兼容性和跨平台性 高性能和可靠性 SQLite 的局限性有哪些? 并发处理能力有限 缺乏用户管理和权限控制功能 有限的扩展性 有限的网络支持 SQLite 和其他数据库系统(如 MyS…...

【C/C++】字符/字符串函数(0)(补充)——由ctype.h提供

零.导言 除了字符分类函数,字符转换函数也是一类字符/字符串函数。 C语言提供了两种字符转换函数,分别是 toupper , tolower。 一.什么是字符转换函数? 顾名思义,即转换字符的函数,如大写字母转小写字母&am…...

Git 的特殊配置文件

文章目录 1.前言2.Git 标准配置文件.gitignore作用格式示例 .gitattributes作用格式示例 .gitmodules作用格式示例 .gitconfig作用格式示例 3.非 Git 标准约定文件.gitkeep简介示例 .gitacls作用格式示例 参考文献 1.前言 Git 是一个强大的版本控制系统,它使用多个…...

数据的表现形式(1)

数据的表现形式 西文字符编码 ASCII码(美国信息交换标准码) 计算机内部用一个字节(8位二进制),来存放一个7位ASCII码,最高位为“0”,共 可以表示128个不同字符 ASCII码中,0是48&…...

《高频电子线路》—— 调幅

文章内容来源于【中国大学MOOC 华中科技大学通信(高频)电子线路精品公开课】,此篇文章仅作为笔记分享。 调幅 普通调幅 AM 普通调幅,也属于线性调制,需要了解其时域和频域。 时域(表达式) vΩ…...

ubuntu22.04安装ROS2Humble

参考链接 Ubuntu22.04——ROS2安装以及小海龟画圆 Ubuntu 22.04 安装 ros noetic Slam_in_autonomous_driving(一) 环境配置...

软中端,硬中断(学习笔记)

/proc/softirqs 提供了软中断的运行情况; /proc/interrupts 提供了硬中断的运行情况。 以下图片展示的是软中断内容: 在查看 /proc/softirqs 文件内容时,你要特别注意以下这两点。 第一,要注意软中断的类型,也就是这…...

scIDST:弱监督学习推断单细胞转录组数据中的疾病进展阶段

背景:患者来源组织中的单个细胞,每个都处于不同的病理阶段,因此这种细胞变异性阻碍了随后的差异基因表达分析。 结果:为了克服这种异质性问题,作者提出了一种新的深度学习方法,scIDST,该方法可以…...

Linux 下执行定时任务之 Systemd Timers

不知道 ECS 因为什么缘故,上面安装的 MySQL 服务老是不定期挂掉,本来想通过 Linux 得 Cron 配置个半小时的定时检测任务,结果一直没有执行,因此又尝试使用了 Systemd Timers 进行了重新配置,简要做个记录。 Systemd Ti…...

flutter 专题二 Flutter状态管理之Riverpod 0.8.4

一 、flutter 有哪些状态管理方式 Flutter的状态管理方式有很多,Redux、 Bloc、 MobX、Provider等等。单单一个Provider,我也见到了各种组合,例如ChangeNotifier Provider / StateNotifier Provider( freezed)。各…...

【Linux】从零开始使用多路转接IO --- poll

碌碌无为,则余生太长; 欲有所为,则人生苦短。 --- 中岛敦 《山月记》--- 从零开始使用多路转接IO 1 前言1 poll接口介绍3 代码编写4 总结 1 前言 上一篇文章我们学习了多路转接中的Select,其操作很简单,但有一些缺…...

Docker配置宿主机目录和网络映射

容器挂载宿主机目录 在Docker中,你可以通过-v或--volume选项将宿主机的目录挂载到容器中。这可以让你在容器和宿主机之间共享文件。 例如,如果你想将宿主机的/home/user/data目录挂载到容器的/data目录,你可以使用以下命令: do…...

第十七课 component组件解析

component组件解析 component组件的写法在众多组件写法中算是比较简单的&#xff0c;component组件结构组成如下&#xff1a; 1&#xff09;组件名 2&#xff09;组件模板 3&#xff09;利用Vue对象进行生成 基础示例&#xff1a; <div id"app"><test>…...

求余和求模是不是一样的,就要看看计算机中的 fix 和 floor 区别

在计算机中&#xff0c;fix和floor是两个不同的取整函数&#xff0c;它们各自有不同的取整规则。以下是fix和floor的详细区别&#xff1a; 一、定义与功能 fix函数 定义&#xff1a;fix函数是朝零方向取整的函数&#xff0c;即它会返回小于或等于&#xff08;对于正数&#xf…...

00 递推和递归的核心讲解

递归的步骤 说 f(n)含义返回/xx f(n)等价式子在第二步中观察趋势&#xff0c;发现边界值&#xff08;分类递归&#xff09;和终止值&#xff08;return&#xff09; 递归优化思路 记忆化 递推/动态规划的步骤 说f(n)含义循环 关系式列 初值 综上&#xff0c;题目分为两类&a…...

深度学习常用开源数据集介绍【持续更新】

DIV2K 介绍&#xff1a;DIV2K是一个专为 图像超分辨率&#xff08;SR&#xff09; 任务设计的高质量数据集&#xff0c;广泛应用于计算机视觉领域的研究和开发。它包含800张高分辨率&#xff08;HR&#xff09;训练图像和100张高分辨率验证图像&#xff0c;每张图像都具有极高…...

rust编写的系统监测器

系统监测器 技术栈 rusttaurivue3vue-echartsrsbuild 软件介绍 用于查看电脑的硬件信息&#xff0c;实时监测cpu&#xff0c;内存&#xff0c;硬盘&#xff0c;网络&#xff0c;进程等系统资源 图形化&#xff0c;动态化展示&#xff0c;美观实用 软件截图 下载 https:/…...

【MyBatis源码】CacheKey缓存键的原理分析

文章目录 Mybatis缓存设计缓存KEY的设计CacheKey类主体CacheKey组成CacheKey如何保证缓存key的唯一性 Mybatis缓存设计 MyBatis 每秒过滤众多数据库查询操作&#xff0c;这对 MyBatis 缓存键的设计提出了很高的要求。MyBatis缓存键要满足以下几点。 无碰撞&#xff1a;必须保证…...

034_Structural_Transient_In_Matlab结构动力学问题求解

结构动态问题 问题描述 我们试着给前面已经做过的问题上加一点有趣的东西。 结构静力学求解 当时求解这个问题&#xff0c;在最外面的竖直切面加载了一个静态的固定的力。下面我们试试看在上方的表面增加一个脉冲压力载荷。 采用统一的有限元框架&#xff0c;定义问题&…...

项目模块十五:HttpResponse模块

一、模块设计思路 存储HTTP应答要素&#xff0c;提供简单接口 二、成员变量 int _status; // 应答状态码 unordered_map<string, string> _headers; // 报头字段 string _body; // 应答正文 bool _redirect_flag; // 是否重定向信息 stri…...

推荐一款优秀的pdf编辑器:Ashampoo PDF Pro

Ashampoo PDF Pro是管理和编辑 PDF 文档的完整解决方案。程序拥有您创建、转换、编辑和保护文档所需的一切功能。根据需要可以创建特定大小的文档&#xff0c;跨设备可读&#xff0c;还可以保护文件。现在您还能像编辑Word文档一样编辑PDF! 软件特点 轻松处理文字 如 Microso…...

【系统架构设计师】2024年上半年真题论文: 论模型驱动架构设计方法及其应用(包括解题思路和素材)

更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 真题题目(2024年上半年 试题3)解题思路1、模型驱动架构能够为软件开发带来的好处2、模型驱动架构的开发过程论文素材参考真题题目(2024年上半年 试题3) 模型驱动架构设计是一种用于应用系统开发的软件设计方法…...