searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

有关virtio_blk的介绍及FPGA的实现四

2024-05-29 02:47:08
23
0

四、virtio_blk输入输出包格式介绍

  上面对于模块间的数据流程有个基本的介绍,现在列出virtio_blk控制器向远端发送和接收的存储包的格式。由于存储IO操作有个特点,就是每一个读或者写的请求,必定有一个对应的返回通知,用来表示此请求是否操作成功,并且也携带所读回来的数据信息等。请求命令数据等组成的包为存储请求包,返回通知组成的包为存储完成包。

  如图4所示,为virtio_blk控制器输出的存储请求包的格式。如图5所示为virtio_blk控制器接收到的远端返回的存储完成包的格式。此格式地址是从右上角为起点,从右到左递增,一直到左下角为止,每一行为512bit对齐,主要是为了在FPGA内部处理方便,因此对于需要补齐512bit的位宽的那一行,则用rsv和padding填充。这里对包格式中的有关信息做一个简单的说明。

(1)virtio_net_head:预留的96bit空间,此部分为存储包经过virtio_net_blk模块传输时(图1所示),由virtio_net_blk来填充的,其主要为了virtio_net_blk和SOC之间的交互。

(2)PF+VF+qid:32bit位宽,此部分是指明该存储包是属于host侧的哪个PF或者VF中的哪个queue的。相当于是此存储包的身份标签。

(3)Rsv:保留位,无实际作用。

(4)Information:存储包携带的一些指示信息,比如包含指明此包携带了多少个只写host的描述符,此包对应的index值和包长信息等。

(5)desc_0~desc_n:只写host的描述符,具体个数由information里面的信息指定。

(6)Padding:填充无效bit,主要是为了补齐512bit的数据位宽。

(7)Type:指明此存储包是读磁盘操作还是写磁盘操作等。

(8)Sector:指明读写磁盘的扇区的起始位置。

(9)write_data:写磁盘的数据,大小为512字节的整数倍。放置于存储包的末尾。

(10)read_data:读到磁盘的数据,大小为512字节的整数倍。

(11)Status:状态指示信号,指明此次操作是否成功。

图 4 virtio_blk控制器输出的存储请求包格式

 

图 5 virtio_blk控制器接收远端返回的的存储完成包格式

0条评论
0 / 1000
l****n
9文章数
0粉丝数
l****n
9 文章 | 0 粉丝
原创

有关virtio_blk的介绍及FPGA的实现四

2024-05-29 02:47:08
23
0

四、virtio_blk输入输出包格式介绍

  上面对于模块间的数据流程有个基本的介绍,现在列出virtio_blk控制器向远端发送和接收的存储包的格式。由于存储IO操作有个特点,就是每一个读或者写的请求,必定有一个对应的返回通知,用来表示此请求是否操作成功,并且也携带所读回来的数据信息等。请求命令数据等组成的包为存储请求包,返回通知组成的包为存储完成包。

  如图4所示,为virtio_blk控制器输出的存储请求包的格式。如图5所示为virtio_blk控制器接收到的远端返回的存储完成包的格式。此格式地址是从右上角为起点,从右到左递增,一直到左下角为止,每一行为512bit对齐,主要是为了在FPGA内部处理方便,因此对于需要补齐512bit的位宽的那一行,则用rsv和padding填充。这里对包格式中的有关信息做一个简单的说明。

(1)virtio_net_head:预留的96bit空间,此部分为存储包经过virtio_net_blk模块传输时(图1所示),由virtio_net_blk来填充的,其主要为了virtio_net_blk和SOC之间的交互。

(2)PF+VF+qid:32bit位宽,此部分是指明该存储包是属于host侧的哪个PF或者VF中的哪个queue的。相当于是此存储包的身份标签。

(3)Rsv:保留位,无实际作用。

(4)Information:存储包携带的一些指示信息,比如包含指明此包携带了多少个只写host的描述符,此包对应的index值和包长信息等。

(5)desc_0~desc_n:只写host的描述符,具体个数由information里面的信息指定。

(6)Padding:填充无效bit,主要是为了补齐512bit的数据位宽。

(7)Type:指明此存储包是读磁盘操作还是写磁盘操作等。

(8)Sector:指明读写磁盘的扇区的起始位置。

(9)write_data:写磁盘的数据,大小为512字节的整数倍。放置于存储包的末尾。

(10)read_data:读到磁盘的数据,大小为512字节的整数倍。

(11)Status:状态指示信号,指明此次操作是否成功。

图 4 virtio_blk控制器输出的存储请求包格式

 

图 5 virtio_blk控制器接收远端返回的的存储完成包格式

文章来自个人专栏
紫金DPU存储卸载硬件实现有关技术探讨
9 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
1
1