计算机组成原理笔记-第4章 存储器

news/2024/7/4 7:06:02 标签: 笔记, 硬件工程

第4章 存储器

笔记PDF版本已上传至Github个人仓库:CourseNotes,欢迎fork和star,拥抱开源,一起完善。

笔记是最初是没打算发网上的,所以很多地方都为了自我阅读方便,我理解了的地方就少有解释;我不理解的地方理解后加上的解释便很多。

因此,若读者在阅读过程中遇到错误或理解问题,请评论区留言或者私信,我们一起讨论:看到会及时回复。

4.1 概述

4.1.1 存储器分类

在这里插入图片描述

4.1.2 存储器的层次结构
  • 存储器速度、容量和 位价的关系图

  • 缓存-主存层次和主存-辅存层次图

    在这里插入图片描述

    • 主存和缓存之间匹配的是速度,它们之间的数据调动是由硬件自动完成的
    • 主存和辅存之间匹配的是容量,它们之间的数据调动是 由硬件和操作系统共同完成的。

4.2 主存储器

4.2.1 概述
  • 现代计算机的主存都由半导体集成电路构成,,MARMDR制作在CPU芯片内,如下图所示。下图中虽然MAR和MDR是在CPU内部,但是这并不代表内存的MAR和MDR在CPU中。下图的MDR和MAR为CPU的器件,主存有但未画出来。

  • 寻址范围计算

    • 按字节寻址范围计算为【 2 地址线位数 2^\text{地址线位数} 2地址线位数】Byte
    • 按字寻址范围计算为【 2 地址线范围 × 8 字长 \frac{2^\text{地址线范围}\times8}{字长} 字长2地址线范围×8】bit
  • 主存的技术指标

    • 存储容量:指主存能存放二进制代码的总位数

      ①存储容量=存储单元个数x存储字长 (以位数表示)
      ②存储容量=存储单元个数x存储字长/8 (以字节表示)

    • 存储速度

      存储速度是由存取时间和存取周期来表示

      • 存取时间

        存取时间又称为存储器的访问时间(Memory Access Time),是指启动一次存储器操作(读或写)到完成该操作所需的全部时间。

        存取时间分读出时间和写人时间两种。读出时间是从存储器接收到有效地址开始,到产生有效输出所需的全部时间。写人时间是从存储器接收到有效地址开始,到数据写人被选中单元为止所需的全部时间。

      • 存取周期

        存取周期(Memory Cycle Time)是指存储器进行连续两次独立的存储器操作(如连续两次读操作)所需的最小间隔时间

    • 存储器带宽
      表示单位时间内存储器存取的信息量,如下例:

      存取周期为500ns,每个存取周期可访问16位,则它的带宽为32M位/秒,计算如下
      32 Mbit/s = 16 b i t 500 × 1 0 − 9 s 32\text{Mbit/s}=\frac{16bit}{500\times10^{-9}s} 32Mbit/s=500×109s16bit

      为了提高存储器的带宽,可以采用以下措施:

      ① 缩短存取周期。
      ②)增加存储字长,使每个存取周期可读/写更多的二进制位数。
      ③增加存储体

4.2.2 半导体存储芯片简介
  • 半导体存储芯片的译码驱动方式有两种:线选法和重合法

    在这里插入图片描述

  • 控制线

    • 片选线:用来选择存储芯片

      • CS ‾ \overline{\text{CS}} CS:片选线,低电平有效

      • CE ‾ \overline{\text{CE}} CE:使能线,低电平有效

    • 读/写控制线:决定芯片进行读/写操作

      • WE ‾ \overline{\text{WE}} WE:低电平写 高电平读
4.2.3 随机存储器
  • 静态 RAM(Static RAM, SRAM)

    由千静态 RAM是用触发器工作原理存储信息的,因此即使信息读出后,它仍保持其原状 态,不需要再生。但电源掉电时,原存信息丢失,故它属易失性半导体存储器。

    • 静态 RAM 基本单元电路

    在这里插入图片描述

    读出时, V C C V_{CC} VCC家电, T 3 T_3 T3 T 4 T_4 T4开关都闭合电路连通;接着A‘和A同时加电, T 1 T_1 T1 T 2 T_2 T2闭合,数据从存储芯片内流向A与A’(两侧数据是一致的); T 5 T_5 T5 T 6 T_6 T6从行地址选择线上获取行地址, T 7 T_7 T7 T 8 T_8 T8从列地址选择线上获取列地址,此时两侧数据流通;左侧数据流通至左侧写放大器后反向,无法通过;右侧数据不经过放大器直接送到 D OUT \text{D}_\text{OUT} DOUT中。

    写入时,数据经过左侧放大器将取反,右侧正常通过;我们选择好行地址与列地址,打开两侧通路。当数据到达A‘与A的时候有两种情况:

    • D IN \text{D}_\text{IN} DIN为1,则A’为0,A为1,此时 T 2 T_2 T2断开, T 1 T_1 T1连接,正常写入1;
    • D IN \text{D}_\text{IN} DIN为0,则A‘为1,A为0,此时 T 1 T_1 T1断开, T 2 T_2 T2连接,正常写入0.
    • 静态 RMA 芯片举例(Intel 2114)

      在这里插入图片描述

      C S ‾ \overline{\mathrm {CS}} CS W E ‾ \overline{\mathrm {WE}} WE 均为低电平时,输入()三 态门打开, I / O 4 ∼ I / O 1 \mathrm{I/O}_{4}\sim\mathrm{I/O}_{1} I/O4I/O1上的数据即写入指定地址单元中。 C S ‾ \overline{\mathrm {CS}} CS为低电平、 W E ‾ \overline{\mathrm {WE}} WE 为高电平时, 输出()三态门打开,列 I/0 电路的输出经片内总线输出至数据线 I / O 4 ∼ I / O 1 \mathrm{I/O}_{4}\sim\mathrm{I/O}_{1} I/O4I/O1 上。

      在这里插入图片描述

      • 存储矩阵结构

      在这里插入图片描述

      • 读周期时序

      在这里插入图片描述

      • 写周期时序

      在这里插入图片描述

      地址有效后,先发出写命令开始片选,片选完成了后,等待上一个读周期的数据滞后完成我们便开始写。由于写始终要知道内存单元的地址,所以地址失效一定在 D I N \mathrm {D_{IN}} DIN之后

  • 动态 RAM(Dynamic RAM, DRAM)

    常见的动态RAM基本单元电路有三管式单管式两种,它们的共同特点都是靠电容存储 电荷的原理来寄存信息,若电容上存有足够多的电荷表示存”1",电容上无电荷表示存“0”。

    电 容上的电荷一般只能维持 1~ 2 ms,因此即使电源不掉电,信息也会自动消失;为此,必须在 2 ms内对其所有存储单元恢复一次原状态,这个过程称为再生刷新

    由千它与静态 RAM 相 比,具有集成度更高功耗更低等特点,目前被各类计算机广泛应用。

    在这里插入图片描述

    1. 读操作:当读选择线被选中时,晶体管T2导通,若存储在 C g \text{C}_\text{g} Cg上的电荷足够则T1导通,那么T1和T2接地,使读数据线降为低电平,读出0;若 C g \text{C}_\text{g} Cg的电荷不足以导通T1,则读数据线保持高电平不变。

      因此我可以发现读出的信息与原存入的信息是反相的,若要恢复真正的数据,需要将读出的数据进行取反。

    2. 写操作:在写操作期间,写选择线被选中,晶体管T3导通,允许电流通过写数据线流向电容Cg。写入数据是正相的。

    • 三管 MOS 动态 RAM 结构示意图

    在这里插入图片描述

    • 单管 MOS 动态 RAM 基本单元电路

    在这里插入图片描述

  • 动态 RAM 的刷新

    刷新的过程实质上是先将原存信息读出,再由刷新放大器形成原信息并重新写入的再生过程。由于存储单元被访问是随机的,有可能某些存储单元长期得不到访问,不进行存储器的 读/写操作,其存储单元内的原信息将会慢慢消失。

    为此,必须采用定时刷新的方法,它规定在一 定的时间内,对动态 RAM 的全部基本单元电路必作一次刷新,一般取2 ms,这个时间称为刷新周期,又称再生周期。

    刷新是一行行进行的,必须在刷新周期内,由专用的刷新电路来完成对基 本单元电路的逐行刷新,才能保证动态 RAM 内的信息不丢失。通常有三种方式刷新:集中刷新分散刷新异步刷新

    • 集中刷新:集中刷新是在规定的一个刷新周期内,对全部存储单元集中一段时间逐行进行刷新,此刻必 须停止读/写操作。

      例如,对 128x128 矩阵的存储芯片进行刷新时,若存取周期为 0.5 µs,刷新周 期为2 ms(占 4 000 个存取周期),则对 128 行集中刷新共需 64 µs(占 128 个存取周期),其余的 1 936 µ,s (共 3 872 个存取周期)用来读/写或维持信息,如下图所示。由于在这 64 µs 时间内不能进行读/写操作,故称为“死时间”,又称访存“死区”,所占比率为 128/4000x 100% = 3.2%, 称为死时间率

      🈲刷新一行占一个存储周期

    • 分散刷新:分散刷新是指对每行存储单元的刷新分散到每个存取周期内完成。

      该模式中,所有的行刷新被分配到了各存取周期,即完成一次读/写就做一行的刷新;存取周期由0.5µs扩充到了1µs,这是因为前0.5µs用来进行读/写;后0.5µs用来刷新;这样做的好处是不存在读写停止读写的死区时间了,坏处是存储周期变长了,降低系统效率。

    在这里插入图片描述

    • 异步刷新

      结合分散刷新与集中刷新,每隔若干秒刷新一行。此般,经过一个刷新周期后所有行都得到了刷,即克服了集中刷新的长时死区效应又解决了

    在这里插入图片描述

  • 动态 RAM 和静态 RAM 的比较

在这里插入图片描述

4.2.4 只读存储器(ROM)

半导体ROM基本器件为两种:MOS 型和 TTL 型。

4.2.5 存储器容量的扩展
4.2.6 存储器与CPU的连接
  • 存储器与 CPU 的连接步骤:
  • 存储器于CPU连接实例1
    • 问题描述

      例 4.1 设 CPU 有 16 根地址线、8 根数据 线,并用 M R E Q ‾ \overline{\mathrm{MREQ}} MREQ 作为访存控制信号(低电平有 效),用 W R ‾ \overline{\mathrm{WR}} WR作为读/写控制信号(高电平为读,低 电平为写)。现有下列存储芯片:1 Kx4 位 RAM、 4 Kx8 位 RAM、8 Kx8 位 RAM、2 Kx8 位 ROM、 4 Kx8 位 ROM、8 Kx 8 位 ROM 及 74138 译码器 和各种门电路,如图 4.36 所示。画出 CPU 与存 储器的连接图,要求如下:

      • 主存地址空间分配: 6000H ~ 67FFH 为系统程序区。;6800H ~ 6BFFH 为用户程序区。
      • 合理选用上述存储芯片,说明各选几片。
      • 详细画出存储芯片的片选逻辑图。

      在这里插入图片描述

    • 问题解答
      • 写出对应的二进制地址码

        在这里插入图片描述

      • 确定芯片的数量及类型

        根据6000H~ 67FFH 为系统程序区的范围,应选择 1 片 2 Kx8 位的 ROM

        根据6800H~ 6BFFH 为用户程序区的范围,选 2 片 1 Kx4 位的 RAM 芯片正好满足 1 Kx8 位 的用户程序区要求。

      • 分配地址线

        将 CPU 的低 11 位地址 A 10 ∼ A 0 \mathrm {A_{10}}\sim \mathrm{A_0} A10A0。与 2 Kx 8 位的 ROM 地址线相连;将 CPU 的低 10 位地址 A 9 ∼ A 0 \mathrm {A_{9}}\sim \mathrm{A_0} A9A0。与 2 片 1 Kx4 位的 RAM 地址线相连。

      • 确定片选信号和片选逻辑以及接线

        由74138 译码器输入逻辑关系可知,必须保证控制端 G 1 \mathrm G_1 G1为高电平, G ‾ 2 A \mathrm{\overline{G}_{2A}} G2A G ‾ 2 B \mathrm{\overline{G}_{2B}} G2B为低电平,才能使译码器正常工作。

        根据第一步写出的存储器地址范围得出, A 15 \mathrm {A_{15}} A15始终为低电平,, A 14 \mathrm {A_{14}} A14始终为高电平,它们正好可分别与译码器的 G ‾ 2 A \mathrm{\overline{G}_{2A}} G2A(低)和 G 1 \mathrm G_1 G1(高)对应。

        而访存控制信号 M R E Q ‾ \overline{\mathrm{MREQ}} MREQ (低电平有效)又正好可与 G ‾ 2 B \mathrm{\overline{G}_{2B}} G2B(低)对应。剩下的 A 13  、 A 12  、 A 11 \mathrm{A}_{13}\mathrm{~、A}_{12}\mathrm{~、A}_{11} A13 A12 A11可分别接到译码器的 C、B、A 输入 端。

        其输出 Y 4 ‾ {\overline{\mathrm{Y_4}}} Y4 有效时,选中 1 片 ROM; Y 5 ‾ {\overline{\mathrm{Y_5}}} Y5 A 10 {\mathrm{A_{10}}} A10 同时有效均为低电平时,与门输出选中 2 片 RAM,如图 4.37 所示。

        图中 ROM 芯片的 P D / P r o g {\mathrm{PD/Prog}} PD/Prog 端接地,以确保在读出时低电平有效。RAM 芯片的读写控制端与 CPU 的读写命令端 W R ‾ {\overline{\mathrm{WR}}} WR 相连。

        ROM 的 8 根数据线直接与 CPU 的 8 根数据线相连,2 片 RAM 的数据线分别与 CPU 数据总线的高 4 位和低 4 位相连。

      • 画图

        在这里插入图片描述

4.2.7 存储器的校验(汉明码)
  • 简介

汉明码是由 Richard Hanming 于 1950 年提出的,它具有一位纠错能力。

新增的汉明码校验位数应满足如下关系: 2 k ⩾ n + k + 1 2^{k}\geqslant n+k+1 2kn+k+1,其中k为校验位位数,n位数据位数。

同时,我要强调的是汉明校验码的生成和校验都都两种原则,希望读者要对概念进行清晰地把握,不可一知半解:
汉明校验 { 按配偶原则的校验 按配奇原则的校验 \text{汉明校验}\begin{cases} \text{按配偶原则的校验}\\ \text{按配奇原则的校验} \end{cases} 汉明校验{按配偶原则的校验按配奇原则的校验
这里直接阐述配偶和配奇的原则会比较抽象,我们放到具体的例子中来看,会更加易懂。

  • 汉明码生成
  1. 确定校验位的个数

    使用公式【 2 k ⩾ n + k + 1 2^{k}\geqslant n+k+1 2kn+k+1】计算需要的k,其中 k 是检验位的数量,n 是数据位的数量;

    举个逆子:原欲发送数据为:0101,此时我们可得n=4,则欲使 2 k ≥ 4 + k + 1 2^k\geq4+k+1 2k4+k+1,k最小为3,即校验位个数为3。

  2. 安置校验位

    我们规定:所有的校验位均放置在第 2 n 2^n 2n位,也就是第1、2、4、8…位置等都是校验位,n从0开始,到k-1结束。

    上例中k=3,则校验位的位置为:① 2 0 = 1 2^0=1 20=1;② 2 1 = 2 2^1=2 21=2;③ 2 2 2^2 22=4;即3位校验位放在最后要发送数据的第1,第2,第4个位置。

  3. 填充数据位:

    在非校验位的其他位置上填写真正的数据,填充后汉明码应如如下形式才对:

    c 1 c_1 c1 c 2 c_2 c20 c 3 c_3 c3101

    其中 c 1 c_1 c1 c 2 c_2 c2 c 3 c_3 c3为待确定值的校验位。

  4. 画表计算校验位的值

    我们的原则是,位置代表的二进制写好后,每一行值为1的二进制位分为一组;然后,你会发现,每一行校验位的位置是互斥的,只有一个校验位值为1。也就是说,一个校验位会和若干数值位搭配,组成一组。

    然后我们可以引出配奇和配偶原则了:

    • 配奇原则:通过配置校验位 C j C_j Cj,使得该组1的个数为奇数个,那么该组的各位进行异或操作必为1
    • 配奇原则:通过配置校验位 C j C_j Cj,使得该组1的个数为偶数个,那么该组的各位进行异或操作必为0

    基于这样的发现,我们让同一组各数据位进行异或(两个二进制位异或,相同结果为0,不同为1)运算,按照配偶原则,可得结果如下计算所示:
    配偶原则 { C 1 ⊕ 0 ⊕ 1 ⊕ 1 ⟹ C 1 = 0 C 2 ⊕ 0 ⊕ 0 ⊕ 1 ⟹ C 2 = 1 C 3 ⊕ 1 ⊕ 0 ⊕ 1 ⟹ C 3 = 0 \text{配偶原则}\begin{cases}C_1\oplus0\oplus1\oplus1\Longrightarrow C_1=0\\ C_2\oplus0\oplus0\oplus1\Longrightarrow C_2=1\\ C_3\oplus1\oplus0\oplus1\Longrightarrow C_3=0 \end{cases} 配偶原则 C1011C1=0C2001C2=1C3101C3=0
    我们怎么理解上面的 C 1 C 2 C 3 C_1 C_2C_3 C1C2C3的取值?

    C 1 C_1 C1=0】,是因为和它一组的数据位为011中有偶数个1,按照配偶原则,已经有偶数个1了,那我就不用管了;反之看第二组,【 C 2 C_2 C2=1】,这是因为第二组的数据位为001,只有奇数个1,按照配偶原则, C 2 C_2 C2要置1才能保证第二组的1为偶数个。第三组同理。

    刚好在这里把配奇的原则也讲一下,上面的 C 1 C 2 C 3 C_1 C_2C_3 C1C2C3如果按照配奇原则会是多少呢?如下(如果你理解了配偶原则,配奇也很简单):
    配奇原则 { C 1 = 0 ⊕ 1 ⊕ 1 ‾ ⟹ C 1 = 1 C 2 = 0 ⊕ 0 ⊕ 1 ‾ ⟹ C 2 = 0 C 3 = 1 ⊕ 0 ⊕ 1 ‾ ⟹ C 3 = 1 \text{配奇原则}\begin{cases}C_1=\overline{0\oplus1\oplus1}\Longrightarrow C_1=1\\ C_2=\overline{0\oplus0\oplus1}\Longrightarrow C_2=0\\ C_3=\overline{1\oplus0\oplus1}\Longrightarrow C_3=1 \end{cases} 配奇原则 C1=011C1=1C2=001C2=0C3=101C3=1
    可见,配奇的结果和配偶的结果刚好相反,这是因为异或操作的原理使得如果同一组中的数据位有偶数个1那么异或必为0,那么取反得校验位为1,那么组合起来(数据位有偶数个1,校验位有1个1,相加肯定是奇数咯)1的个数就是奇数个咯,完成奇配置。

  5. 书写完整的汉明码(配偶原则)

    如第四步所计算,得到三个校验位的值后,将其值填充到校验位所对应的位置,将校验位的值填充进行,写出完整的汉明码,上例的汉明码为

    1234567
    C 1 C_1 C1 C 2 C_2 C2 P 1 P_1 P1 C 3 C_3 C3 P 2 P_2 P2 P 3 P_3 P3 P 4 P_4 P4
    0100101
  6. 书写完整的汉明码(配奇原则)
    1234567
    C 1 C_1 C1 C 2 C_2 C2 P 1 P_1 P1 C 3 C_3 C3 P 2 P_2 P2 P 3 P_3 P3 P 4 P_4 P4
    1001101
  • 汉明码校4验

按照配偶原则,假设我们收到了0110101,已知这是一个传输出错的汉明码

按照配偶原则,假设我们收到了1001100,已知这是一个传输出错的汉明码

  1. 提取小组(配偶原则)

    0110101总位数为7,则易推得校验位为3位;再根据分组规则,我们可得到三组数据如下:

    • 组1(1357)=0111
    • 组2(2367)=1101
    • 组3(4567)=0101
  2. 提取小组(配奇原则)

    1001100总位数为7,则易推得校验位为3位;再根据分组规则,我们可得到三组数据如下:

    • 组1(1357)=1010
    • 组2(2367)=0000
    • 组3(4567)=1100
  3. 校验(配偶原则)

    我们按照配偶原则,将原来的分组的各组各位异或运算,若为0则表示该位没出错,否则表示出错。

    上述汉明码,我们进行如下计算:
    g 1 = 0 ⊕ 1 ⊕ 1 ⊕ 1 = 1 g 2 = 1 ⊕ 1 ⊕ 0 ⊕ 1 = 1 g 3 = 0 ⊕ 1 ⊕ 0 ⊕ 1 = 0 g1=0\oplus1\oplus1\oplus1=1\\ g2=1\oplus1\oplus0\oplus1=1\\ g3=0\oplus1\oplus0\oplus1=0 g1=0111=1g2=1101=1g3=0101=0
    欸,汉明码只能纠错1位,那到底是哪一位出错了呢?其实呀,这里并不能只管看出来,但是汉明码的神奇之处就在于,校验后的k位数值的二进制逆序组合转化为十进制表示的数值就是出错的位置。

    如上例,计算完得到 g 1 g 2 g 3 g_1g_2g_3 g1g2g3=110,我们逆序得到011,其十进制表示3,那么就是第三位出错了,瞅瞅是不是😁发的是0100101接收到的是0110101,确实是第3位出错了。

  4. 校验(配奇原则)

    我们按照配奇原则,将原来的分组的各组各位异或后取反运算,若为0则表示该位没出错,否则表示出错。

    上述汉明码,我们进行如下计算:
    g 1 = 1 ⊕ 0 ⊕ 1 ⊕ 0 ‾ = 1 g 2 = 0 ⊕ 0 ⊕ 0 ⊕ 0 ‾ = 1 g 3 = 1 ⊕ 1 ⊕ 0 ⊕ 0 ‾ = 1 g1=\overline{1\oplus0\oplus1\oplus0}=1\\ g2=\overline{0\oplus0\oplus0\oplus0}=1\\ g3=\overline{1\oplus1\oplus0\oplus0}=1 g1=1010=1g2=0000=1g3=1100=1
    此时得到 g 1 g 2 g 3 g_1g_2g_3 g1g2g3=111,逆序得到111111十进制表示7,那么第七位出错了;检查一下呗,发的是1001101接收到的是1001100,确实是第7位出错了。

4.2.8 提高访存速度的措施(多位交叉)

4.3 高速缓冲存储器

4.3.1 概述
4.3.2 Cache-主存地址映射

4.4 循环冗余校验码


http://www.niftyadmin.cn/n/5534607.html

相关文章

React+TS前台项目实战(十七)-- 全局常用组件Dropdown封装

文章目录 前言Dropdown组件1. 功能分析2. 代码详细注释3. 使用方式4. 效果展示 总结 前言 今天这篇主要讲全局Dropdown组件封装,可根据UI设计师要求自定义修改。 Dropdown组件 1. 功能分析 (1)通过position属性,可以控制下拉选项的位置 &am…

Python中文自然语言处理(NLP)中文分词工具库之pkuseg使用详解

概要 在中文自然语言处理(NLP)中,分词是一个基础且关键的任务。pkuseg 是由北京大学开发的一个中文分词工具,专为处理现代汉语而设计。它采用了先进的深度学习技术,能够准确地进行中文分词,同时支持自定义词典和多领域分词。本文将详细介绍 pkuseg 库,包括其安装方法、…

Spring Boot 快速入门2 ——SpringBoot运行原理分析

一、SpringBoot运行原理 父依赖 我们再查看 Spring Boot 项目中 pom.xml 可以看出&#xff0c;所有的 Spring Boot 项目 直接或间接的 依赖于一个 父项目 spring-boot-starter-parent &#xff0c;主要是管理项目的资源及其插件。 <parent><groupId>org.sprin…

【Android WebView】WebView基础

一、简介 WebView是一个基于webkit引擎、展现web页面的控件。Android的Webview在低版本和高版本采用了不同的webkit版本内核&#xff0c;4.4后直接使用了Chrome。 二、重要类 以WebView类为基础&#xff0c;WebSettings、WebViewClient、WebChromeClient为辅助共同完成安卓段加…

Java五子棋之坐标校正

上篇针对了Java项目中的解构思维&#xff0c;在这篇内容中我们不妨从整体项目中拆解拿出一个非常重要的五子棋逻辑实现&#xff1a;坐标校正&#xff0c;我们如何使漫无目的鼠标点击变得有序化和可控化呢&#xff1f; 目录 一、从鼠标监听到获取坐标 1.MouseListener和Mouse…

FPGA PCIe加载提速方案

目录 1.bit流压缩 2.flash加载速度 3.Tandem模式 1.bit流压缩 set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design] 2.flash加载速度 打开bitstream setting&#xff0c;设置SPI的线宽和速率&#xff08;线宽按原理图设置&#xff0c;速率尽可能高&#xff09…

等保测评:全面保障信息系统安全的必要举措

等保测评&#xff08;信息安全等级保护测评&#xff09;是评估信息系统安全等级的重要过程&#xff0c;旨在确保信息系统能够抵御各种安全威胁&#xff0c;保障信息的机密性、完整性和可用性。以下是一篇关于等保测评的文章&#xff0c;内容清晰、分点表示&#xff0c;并参考了…

捷瑞数字业绩波动性明显:关联交易不低,募资必要性遭质疑

《港湾商业观察》施子夫 5月22日&#xff0c;山东捷瑞数字科技股份有限公司&#xff08;以下简称&#xff0c;捷瑞数字&#xff09;及保荐机构国新证券披露第三轮问询的回复&#xff0c;继续推进北交所上市进程。 从2023年6月递表开始&#xff0c;监管层已下发三轮审核问询函…