Host与SSD交互步骤以及head,tail获取

2023-10-27

一、步骤:

1:主机HOST组64Byte的SQE到SQ,copy到host内存的SQ中,具体位置由Tail来决定。

2:Host写SQ的DB,写的内容是Tail值。通知SSD取命令,register中的位置代表哪个Queue的DB。

3:SSD收到通知后,到SQ中取指

4:SSD执行命令;

5:指令执行完成,SSD往CQ中写指令执行结果;

6:SSD发送中断通知主机指令完成。MSI-X interrupt

7:收到中断,主机处理CQ,查看指令完成状态。

8:主机处理完CQ中的指令执行结果,通过DB回复SSD。指令结果已处理。

二、Tail、Head值如何获取。

习惯于分开考虑,即先判断host与ssd谁是生产者消费者,再分别讨论各自tail和head值获取方式。

第一步确认谁是生产者和消费者。生产者维护Tail,消费者维护Head。再确认是否满盘,如果满盘就无法写入。

1:对于SQ,HOST是生产者,自己维护tail。首先确认是否满盘,此时需要知道head值。head在SSD回给HOST的CQE中。Host拿到CQE就知道了head在哪里,但是具有延后性。Head和tail值拿到后,通过确认tail=1+head即可判断。

SSD是消费者,自己维护Head,判断是否空盘,需要获取tail,而tail的值在host发的SQDB中。

实际上,SQ是通过count值来确定是否满盘。预设队列深度为1024个Entry,最多申请1023个command ID,当申请不到了时候即表示满盘。在CQE回来时释放新的cmid。

2:对于CQ,SSD是生产者,自己维护tail。先确认是否满盘,此时需要知道head值。head值在host发的CQDB中。

host是消费者,自己维护head,对于CQ Tail DB信息,则是通过每个状态一个P位,Phase Tag,对于执行完置0,未执行是1。CQ在主机中,挨个判断一次。p位这里还需多研究总结,还不是很清楚具体运行逻辑。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Host与SSD交互步骤以及head,tail获取 的相关文章

  • 为神经网络打乱两个 numpy 数组

    我有两个 numpy 数组用于输入数据 X 和输出数据 y X np array 2 3 sample 1 x 16 4 dtype float sample 2 x y np array 1 0 sample 1 y 0 1 dtype
  • 分配列表的多个值

    我很想知道是否有一种 Pythonic 方式将列表中的值分配给元素 为了更清楚 我要求这样的事情 myList 3 5 7 2 a b c d something myList So that a 3 b 5 c 7 d 2 我正在寻找比手
  • 如何在 QTableView 标题中单击鼠标右键单击上下文菜单?

    下面的示例代码 很大程度上受到here http www saltycrane com blog 2007 12 pyqt 43 qtableview qabstracttablemodel 有一个右键单击上下文菜单 当用户单击表中的单元格
  • 如何使用 python、openCV 计算图像中的行数

    我想数纸张 所以我正在考虑使用线条检测 我尝试过一些方法 例如Canny HoughLines and FLD 但我只得到处理过的照片 我不知道如何计算 有一些小线段就是我们想要的线 我用过len lines or len contours
  • 在 PhotoImage 下调整图像大小

    我需要调整图像大小 但我想避免使用 PIL 因为我无法使其在 OS X 下工作 不要问我为什么 无论如何 因为我对 gif pgm ppm 感到满意 所以 PhotoImage 类对我来说没问题 photoImg PhotoImage fi
  • Python 中 time.sleep 和多线程的问题

    我对 python 中的 time sleep 函数有疑问 我正在运行一个脚本 需要等待另一个程序生成 txt 文件 虽然 这是一台非常旧的机器 所以当我休眠 python 脚本时 我遇到了其他程序不生成文件的问题 除了使用 time sl
  • 如何调试 numpy 掩码

    这个问题与this one https stackoverflow com q 73672739 11004423 我有一个正在尝试矢量化的函数 这是原来的函数 def aspect good angle float planet1 goo
  • 当我从本地计算机更改为虚拟主机时,从 python 脚本调用 pdftotext 不起作用

    我编写了一个小的 python 脚本来解析 提取 PDF 中的信息 我在本地机器上测试了它 我有 python 2 6 2 和 pdftotext 版本 0 12 4 我正在尝试在我的虚拟主机服务器 dreamhost 上运行它 它有 py
  • 将多索引转换为行式多维 NumPy 数组。

    假设我有一个类似于以下示例的 MultiIndex DataFrame多索引文档 http pandas pydata org pandas docs stable advanced html gt gt gt df 0 1 2 3 fir
  • 如果另一列中的值为空,则删除重复项 - Pandas

    我拥有的 df Name Vehicle Dave Car Mark Bike Steve Car Dave Steve 我想从 名称 列中删除重复项 但前提是 车辆 列中的相应值为空 我知道我可以使用 df dropduplicates
  • 从字典中绘制直方图

    我创建了一个dictionary计算 a 中出现的次数list每个键的内容 我现在想绘制其内容的直方图 这是我想要绘制的字典的内容 1 27 34 1 3 72 4 62 5 33 6 36 7 20 8 12 9 9 10 6 11 5
  • 如何仅注释堆积条形图的一个类别

    我有一个数据框示例 如下所示 data Date 2021 07 18 2021 07 19 2021 07 20 2021 07 21 2021 07 22 2021 07 23 Invalid NaN 1 1 NaN NaN NaN N
  • django 中的身份验证方法返回 None

    你好 我在 django 中做了一个简单的注册和登录页面 当想要登录时 登录视图中的身份验证方法不返回任何内容 我的身份验证应用程序 模型 py from django db import models from django contri
  • 如何让 Streamlit 每 5 秒重新加载一次?

    我必须每 5 秒重新加载 Streamlit 图表 以便在 XLSX 报告中可视化新数据 如何实现这一目标 import streamlit as st import pandas as pd import os mainDir os pa
  • 预测测试图像时出现错误 - 无法重塑大小数组

    我正在尝试使用 TensorFlow 和 Keras 在 Python 中进行图像识别 并且我已经关注了下面的博客 https stackabuse com image recognition in python with tensorfl
  • 无法将matplotlib安装到pycharm

    我最近开始使用Python速成课程学习Python编程 我陷入困境 因为我无法让 matplotlib 在 pycharm 中工作 我已经安装了pip 我已经通过命令提示符使用 pip 安装了 matplotlib 现在 当我打开 pych
  • 更改用作函数全局作用域的字典

    我想做一个 purePython 的装饰器 其中一部分是能够有选择地禁止访问函数的全局范围 有没有一种方法可以以编程方式更改哪个字典事物充当函数的全局 外部作用域 因此 例如在下面我希望能够拦截对f in h并抛出错误 但我想允许访问g因为
  • 避免“散点/点/蜂群”图中的数据点重叠

    使用绘制点图时matplotlib 我想偏移重叠的数据点以使它们全部可见 例如 如果我有 CategoryA 0 0 3 0 5 CategoryB 5 10 5 5 10 我想要每一个CategoryA 0 数据点并排设置 而不是彼此重叠
  • 旧版本的 spaCy 在尝试安装模型时抛出“KeyError: 'package'”错误

    我在 Ubuntu 14 04 4 LTS x64 上使用 spaCy 1 6 0 和 python3 5 为了安装 spaCy 的英文版本 我尝试运行 这给了我错误消息 ubun ner 3 NeuroNER master src pyt
  • 如何在supervisord中设置组?

    因此 我正在设置 Supervisord 并尝试控制多个进程 并且一切正常 现在我想设置一个组 以便我可以启动 停止不同的进程集 而不是全部或全无 这是我的配置文件的片段 group tapjoy programs tapjoy game1

随机推荐

  • numpy ndarray 打印格式化

    1 ndarray打印省略问题 np set printoptions threshold np inf 2 ndarray打印换行限制 加上下面这句代码 输出时打印不换行 np set printoptions linewidth 400
  • 用Servlet结合c3p0连接池等写一个简单的注册登录

    首先 给一张截图 上面图是我的整体内容 1 先进入工具类 代码如下 package com qf util import javax sql DataSource import com mchange v2 c3p0 ComboPooled
  • oracle体验实验,Oracle实验三

    1 实验目的 1 掌握表的创建与管理 2 掌握索引的创建与管理 3 掌握视图的创建与管理 4 掌握序列的创建与应用 2 实验环境 Win10 以及Oracle 11g 3 实验要求 1 为图书销售系统创建表 2 在图书销售系统适当表的适当列
  • 机器学习案例6:基于SVM的数字识别

    案例6 基于SVM的数字识别 为什么写本博客 前人种树 后人乘凉 希望自己的学习笔记可以帮助到需要的人 需要的基础 懂不懂原理不重要 本系列的目标是使用python实现机器学习 必须会的东西 python基础 numpy pandas ma
  • 在word中插入显示在同一行的两张图片(且各自带有题注)

    http blog csdn net xiao xia article details 46699271 先将两张图片均导入word中 位置设置为 嵌入文本行中 调整t图片大小使得两图片刚好可以呈现在同一行 如果图片不需要题注 或者两图片共
  • 电动摄像机-多输入多输出(MIMO)非线性自回归系统辨识(NARX)——基于MATLAB

    目录 前言 1 输入输出的数据 测量数据序列 2 非线性ARX IDNLARX 模型 使用Wavenet 小波网络 的初步估计 3 非线性ARX模型 尝试更高阶 非线性ARX模型 调整非线性估计量的单位数 4 非线性ARX模型 尝试其他非线
  • caffe运行时常见错误

    这篇文章记录了我运行python时遇到的错误 以及我的解决方法 可能不够全面 欢迎大家一起讨论 补充 1 import caffe 报错 No module named caffe 原因 没有添加caffe python目录到bash sh
  • 自由手写体字帖pdf_英语字帖5分钟做完专属描红字帖,英文书写体一键生成,还不快来看看?...

    英文书写 一直是初学英语练习的重点 从入门级别的笔顺练习 到后来丝滑的连笔书写 现在还有 衡水体 这种为了提高卷面整体颜值的字体 而制作一份专属练习字帖的难度之大 耗时之长 是家长 教师的难处 有这样一个网站 只需要大家把需要练习的内容输入
  • 实意动词的特征和用法

    文章目录 常见的实意动词 实意动词的否定 实意动词提问 常见的实意动词 come read go watch play fly write 例句 He comes from shanghai she is reading story boo
  • 手机上普通h5页面a标签href方式跳转页面会请求两次解决办法

    必须把a标签的href事件屏蔽掉 解决办法是使用onclick方法 替代href事件 实现页面跳转 具体代码如下 a href span class buy bargain btn 去充值 span a
  • 渗透测试工具ZAP入门教程(4)-设置代理谷歌浏览器

    ZAP 代理原理 如下浏览器 拿Chrome为例 Chrome发出的请求都会先经过 ZAP 然后再由 ZAP 发往服务器 如下图 设置代理 1 Chrome设置只需要在地址栏输入 chrome settings 2 然后在搜索栏输入 代理
  • C语言实现扫雷【超详细讲解】

    目录 一 实现扫雷的基本思路 二 代码实现的具体步骤 三 完整代码 1 saolei h部分 2 saolei c部分 3 test c部分 扫雷和三子棋有很多相似的地方 相信大家认真学习完三子棋再将本篇博客认真学习完 会很好的掌握相关的知
  • 缠论是一种交易方法炒股是不是一定要学习缠论(利用缠论如何选股)

    纠缠论是一种交易方法 有必要学习纠缠论吗 1 复杂的数学思维 思考不仅对投机很重要 对股票交易也很重要 这是一项重要的人类能力 缜密的思考和清晰的表达是做好任何事情的前提 这里的数学思维是指我们高中时做的几何题 假设条件a 条件b 证明结论
  • matlab 聚类

    原网址 http blog sina com cn s blog 62f3c4ef01014wz1 html cited from cited from http hi baidu com coralliu blog item dbde03
  • 学好诊脉 破解难症

    from 老中医 LaoZY cn 学好诊脉 破解难症 中国中医药报 2009年9月24日 高允旺 山西临汾永旺脑病医院 很多乡村或基层医生学中医往往是自学或跟师学习 在学习中 脉诊是非常不好掌握的 但是脉诊确实又非常重要 笔者在临证40年
  • C++11并发——多线程lock_gurad ,unique_lock (三)

    http www cnblogs com haippy p 3346477 html struct defer lock t 该类型的常量对象 defer lock defer lock 是一个常量对象 std lock guard 介绍
  • cannot call getWriter() after getOutputStream()

    cannot call getWriter after getOutputStream 在项目里的一个导出EXCEL方法总是报错 报错内容为 cannot call getWriter after getOutputStream 字面意思很
  • 简单动态字符串

    Sds Simple Dynamic String 简单动态字符串 是 Redis 底层所使用的字符串表示 几乎所有的 Redis 模块中都用了 sds 常规字符串 在 C 语言中 字符串可以用一个 0 结尾的 char 数组来表示 比如说
  • 华为OD机试 -猴子爬山(Java)

    题目描述 一天一只顽猴想要从山脚爬到山顶 途中经过一个有n个台阶的阶梯 但是这个猴子有个习惯 每一次只跳1步或3步 试问 猴子通过这个阶梯有多少种不同的跳跃方式 输入描述 输入只有一个数n 0 lt n lt 50 代表此阶梯有多个台阶 输
  • Host与SSD交互步骤以及head,tail获取

    一 步骤 1 主机HOST组64Byte的SQE到SQ copy到host内存的SQ中 具体位置由Tail来决定 2 Host写SQ的DB 写的内容是Tail值 通知SSD取命令 register中的位置代表哪个Queue的DB 3 SSD