在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 992|回复: 10

[原创] 从以太网或者wifi进来的数据CPU 如何接收?

[复制链接]
发表于 2023-12-17 22:47:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
请教一下,假如以太网挂接在总线上,当外部送来了数据, 以太网如何通知CPU接收? 以太网自己需要有一个memory去存储接收到的数据吗? 然后发终端给CPU,CPU从以太网自己的memory里去数据?
发表于 2023-12-17 23:14:05 | 显示全部楼层
本帖最后由 轩辕志瑜 于 2023-12-17 23:15 编辑

“以太网如何通知cpu接收?” 不都是用中断信号? “以太网自己需要有一个memory去存储接收到的数据吗? 然后发终端给CPU,CPU从以太网自己的memory里去数据?” 上古时代的网卡有自己的memory,现在的都是DMA直写主memory的多,这样可以省去数据搬运的时间。只要中断通知cpu去那个地址的内存处理数据就好。

这知识点不是计组的基础知识?
发表于 2023-12-18 12:16:11 | 显示全部楼层
网卡通过DMA把数据写到主存里,发中断通知CPU去处理。一般网卡收过来就是二层的数据,也有些网卡有三层甚至四层的卸载,可以减轻软件协议栈的工作量。也有些追求更高性能的软件不用中断,而是用轮询驱动,比如DPDK。
现在也有些网卡有自己的memory,但主要是智能网卡,可以做更复杂的运算和处理,那个memory是给网卡自己用的,CPU一般不会(或者不能)去访问。
 楼主| 发表于 2023-12-18 20:07:33 | 显示全部楼层


atsga 发表于 2023-12-18 12:16
网卡通过DMA把数据写到主存里,发中断通知CPU去处理。一般网卡收过来就是二层的数据,也有些网卡有三层甚至 ...


但是以太网接收的数据是外面发来的,DMA怎么知道 以太网接收到数据了?怎么会即时的去搬运数据?
发表于 2023-12-19 15:58:29 | 显示全部楼层
dma 有指定目的缓存,中断后,  cpu 从内存中读取。
发表于 2023-12-21 12:08:22 | 显示全部楼层


badegg3 发表于 2023-12-18 20:07
但是以太网接收的数据是外面发来的,DMA怎么知道 以太网接收到数据了?怎么会即时的去搬运数据?
...


一种方法是把网卡的中断信号(或者专门的dma通知信号)连到dma上,这样网卡收到数据之后就能启动dma。还有的干脆网卡和dma直接用专门的总线连起来,这样处理器实际上完全不能直接从网卡读数据,只能读到dma传到内存里的数据。
 楼主| 发表于 2023-12-24 22:17:30 | 显示全部楼层


atsga 发表于 2023-12-21 12:08
一种方法是把网卡的中断信号(或者专门的dma通知信号)连到dma上,这样网卡收到数据之后就能启动dma。还 ...


网卡收到数据,然后再通知DMA,DMA再来取,那数据已经丢失了几个了吧。网卡内部应该有memory存储开头数据吧?
 楼主| 发表于 2023-12-24 22:18:18 | 显示全部楼层


atsga 发表于 2023-12-21 12:08
一种方法是把网卡的中断信号(或者专门的dma通知信号)连到dma上,这样网卡收到数据之后就能启动dma。还 ...


网卡收到数据,然后再通知DMA,DMA再来取,那数据已经丢失了几个了吧。网卡内部应该有memory存储开头数据吧?
 楼主| 发表于 2023-12-24 22:50:52 | 显示全部楼层


murphy522 发表于 2023-12-19 15:58
dma 有指定目的缓存,中断后,  cpu 从内存中读取。


网卡收到数据,然后再通知CPU,CPU再通知DMA,DMA再来取,那数据已经丢失了一些了吧。网卡内部应该有memory存储开头数据吧?
发表于 2023-12-24 23:44:03 | 显示全部楼层


badegg3 发表于 2023-12-24 22:17
网卡收到数据,然后再通知DMA,DMA再来取,那数据已经丢失了几个了吧。网卡内部应该有memory存储开头数据 ...


看你怎么理解和定义memory了,是要sram dram才算memory,还是有点fifo缓冲区,移位寄存器也算memory,甚至只要有时序逻辑都算广义memory?

另外对于以太网来说,丢数据是正常的,它不是一个保证无损通信的协议,不管是线路故障,软件处理速度不够,还是内存带宽或者DMA响应不及时什么原因导致的。可靠传输是到了 TCP 才考虑的事情。

点评

我理解是需要SRAM,哪怕小一点的SRAM来存储通信数据,然后再发中断给CPU,CPU再通知DMA去接收数据到memory。  发表于 2023-12-25 18:32
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-25 08:06 , Processed in 0.026126 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表