V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  allmightbe  ›  全部回复第 1 页 / 共 2 页
回复总数  27
1  2  
@swulling
如果发送端连续发送数据,没有空闲期,两位高电平的停止位后立刻传输下一次的起始位。那么接收端怎么区分启动位,停止位,与数据位?

答:连续数据没法区分帧结构。一步错 步步错。(原话是这么说的,连续数据没法区分帧结构。我以为这就是再说必须要有空闲位😂,原来是我理解错了吗)
2023-10-05 17:43:48 +08:00
回复了 allmightbe 创建的主题 程序员 DDR 的交织原理有点不理解?
2023-10-05 17:42:36 +08:00
回复了 allmightbe 创建的主题 程序员 DDR 的交织原理有点不理解?
@Ayahuasec #2
我见过的比较多的设计是按 Row-Column-Bank 去编址的。
-------
对于这个地址交织,这个我是明确的:就是 row 必须在 col 左边。但至于 bank 到底放到哪里,这个有什么说法吗?

https://imgur.com/bGKe6le.png
看了一个视频,里面是这么放的:
- 因为访问一般是 4 字节对齐的,所以 col 的低 2bit 放最右边。
- 然后接着放 bank 的 2bit ,这样可以利用到 bank 之间的独立性
- 然后放 col 的高 1bit ,这样一轮循环后,使得 col 地址变成 1 时,就可以利用到 row hit 的高效率了。

不知道这么理解对不对。
2023-10-04 18:46:43 +08:00
回复了 allmightbe 创建的主题 程序员 DDR 的交织原理有点不理解?
2023-10-04 18:42:09 +08:00
回复了 allmightbe 创建的主题 程序员 DDR 的交织原理有点不理解?
@liwufan #13
是我蠢了。我理解这个 Decoder 的意思了。因为每行有 1024x4 的数据,所以下面那个粗箭头,需要有 4096 根来分别选中它们。

视频我又看了一遍,那我理解 下面那个粗箭头,应该就是 1024x4 的宽度(要把括号里的 x4 乘进去)。毕竟都叫 bit line 了。

视频我是看了,只是我是 最开始,当时那一遍没太看懂。后面这两天 又看了好多乱七八糟文档文章。
2023-10-04 17:53:22 +08:00
回复了 allmightbe 创建的主题 程序员 DDR 的交织原理有点不理解?
2023-10-04 17:41:58 +08:00
回复了 allmightbe 创建的主题 程序员 DDR 的交织原理有点不理解?
@liwufan
@Ayahuasec
不过,micron 的 block 图里面,有一个地方不是太懂了。
![]( https://s3.bmp.ovh/imgs/2023/10/04/5c22e1c8ea3c56e4.png)

就是上图的两个粗箭头。

上面那个粗箭头,我是理解的:从 row line 选中一行后,就会输出 1024 x 4 的 data 出来,所以和这个粗箭头是 1024 x 4=4096 宽。
- 粗箭头,我理解是代表这个接口处的线很多。上面的粗箭头,则有 4096 根线。

但下面那个粗箭头,就不是很理解了:
- 本身它是个粗箭头,我就不是很理解。这里,我理解是为了选择确认某一 col ,那也是 10 根线,就可以了。
- 另外,这个粗箭头,到底是 1024 的宽度,还是 1024x4 的宽度呢?(就是那个括号里的 x4 要算上吗)

PS:不知道这个 block 图和实际硬件设计,是否能完全关联起来。也许这个粗箭头,只是一个逻辑上的概念。
2023-10-04 17:33:09 +08:00
回复了 allmightbe 创建的主题 程序员 DDR 的交织原理有点不理解?
@liwufan #9
好的,有时间我看看你发的这两篇文章。

看了 micron 的几个 data sheet ,看起来,我理解的 prefetch 应该是对的。
2023-10-04 12:56:37 +08:00
回复了 allmightbe 创建的主题 程序员 DDR 的交织原理有点不理解?
@liwufan #4
@Ayahuasec #5
纠正纠正,“ prefetch 是发生在 bank 内部的”,这句话可能有问题。
2023-10-04 12:44:47 +08:00
回复了 allmightbe 创建的主题 程序员 DDR 的交织原理有点不理解?
@liwufan #4
@Ayahuasec #5
这篇文章 https://depletionmode.com/ram-mapping.html 讲的东西我稍微总结一下:

一个内存条是一个 module ,一个 module 有两面,一面就是一个 rank 。
一个 rank 上面有 8 个 chip (也就是有 8 个 黑色长方形坨坨,人眼能看到的)
一个 chip 里面,有 4 个 bank 。

它就是强调,一个地址转到了 DDR 控制器这边以后,没有用地址的部分 bit 来定位到某个 chip 上去(相反,比如会用 部分 bit 来定位到某个 row ),相反,这个地址线 连接到所有的 chip 上面去了,那么也就是说,所有 chip 都会根据地址线的信息 来返回数据。

然后地址线发送了一个地址以后,这个地址送给了所有 chip (文中是 8 个 chip ),然后 8 个 chip 都返回了 data 。

所以,最后 DDR 就一次性 返回了 8 个字节。

根据大佬的回答,和我看网上的文章。它说的这个 技术,应该不是 prefetch ,因为 prefetch 是发生在 bank 内部的,而文章说的事情,是发生在 某个 rank 上的所有 chip 上的。

PS:不排除这个作者说的东西,是有问题的。因为别的文章没有提到过。
2023-10-04 12:29:07 +08:00
回复了 allmightbe 创建的主题 程序员 DDR 的交织原理有点不理解?
@liwufan #4
@Ayahuasec #5
好吧,先抛开 cpu cache line 那篇文章不谈。

我先确认下 对 prefetch 的理解:
假设是 x8 ,4n prefetch 的配置,那么,
- 内部总线是 8bit*4 ,也就是 32bit 宽度;外部总线是 8bit 宽度。
- 内部总线的频率是外部总线频率的 4 分之一。

在外部看来,我想要拿到 8bit*4 ,至少会经过 4 个 cycle 。(这里我是按照 axi 的知识来理解的。重点是外部总线的宽度还是 8bit ,所以必须有 4 个 cycle )。

不知道上面我的理解对不对
2023-10-03 10:04:40 +08:00
回复了 allmightbe 创建的主题 程序员 DDR 的交织原理有点不理解?
@liwufan #1
@Ayahuasec #2
两位大佬,谢谢回答了。现在我对 DDR 又有了进一步的理解。但又有了新的疑问。

先说下我现有的理解:
- x4/x8/x16 ,是指的 memory array 堆叠的高度。在一个 bank 里,原来一个坐标 [row ,col] 只能定位到 1bit ,现在如果是 x8 ,那么一个坐标 [row ,col] 可以定位到 8bit 。
- 2n/4n/8n prefetch ,主要指的 双边沿采样技术。如果是 x8 和 4n 预取的配置,那么一次访问,可以访问到 4*8bit ,也就是 4 字节。

对于上面的总结,我有点疑问,就是这个预取的东西,肯定是一个缓存,它是放到了什么位置呢,是 bank 内的一个缓存吗?

另外,这篇文章 https://depletionmode.com/ram-mapping.html 讲到了另外一个知识点:
'physical' address actual memory address
0x00f00010 -> 0x00f00010
0x00f00011 -> 0x00f00010
0x00f00012 -> 0x00f00010
0x00f00013 -> 0x00f00010
0x00f00014 -> 0x00f00010
0x00f00015 -> 0x00f00010
0x00f00016 -> 0x00f00010
0x00f00017 -> 0x00f00010

大概意思就是,如果 cpu 发出一个地址,如果这个地址在 8 字节对齐范围内,那么其实都对于同一个地址去了。之所以是 8 ,是因为一个 rank 里面有 8 个 chip 。
进一步的,因为有 8 字节的数据,但实际上又只需要 1 字节的数据,所以还要通过原地址低 3bit 来选出那个字节。
然后,作者说,这个东西和 CPU 的 cache line 有关系。

对于上面的总结,我有点疑问,这个一次性取 8 字节的东西,是在哪个地方或者说哪个接口?
另外,我最大的疑问,我现在把这个一次性 取 8 字节的东西 和 prefetch 有点搞混了,但是它们俩 又好像有点相似之处?所以它们到底是不是同样的东西?还是说 这两个技术 是同时存在的吗,可以根据具体的配置,举一个具体的例子吗?
@tuduweb
薪资还可以,你也在这个行业吗
@duke807
@churchmice
各位大佬,我现在已经在这个行业干了一年,但是现在有一些疑惑,不知道方便加个微信吗?想交流一下经验和看法,感谢!
微信号( YXRvbWljTXV0ZXg=)( base64 的)
@yinseyingji
多学点其他的验证平台,横向提高自己的竞争力。——这个确实是可以。
只不过,我现在连 DV 的本职工作都是不熟的(比如 systemVerilog 、UVM ),感觉自己转的话,还是有点担心的。可能需要多下点功夫。
@dsn93
转 FPGA ,或者转 digital ,感觉对于我来说都有点难度。或者说,不知道我自学了以后,别人愿不愿意接受我这种。
@kangyue9999
交流一下看法和经验,微信号( YXRvbWljTXV0ZXg=)( base64 的)
@kangyue9999
谢谢大佬解释,就是你说的这个意思。
不知道方便加个微信不,实在想找个同行业其它公司的
@kangyue9999
好吧,但感觉 一个芯片公司,对固件和驱动的需求量也是挺大的。PS:以前做过写软件开发,所以这方面很好转,而且现在也比较懂硬件。
@kangyue9999
不确定你说的 c 模型 的意思。我们其实就是基于 emu 平台(都是国外买的)上的某版 build ,跑 我的固件代码(也是真的可以在硅后跑的固件代码,只是不是正式的)。固件代码里面有我的 case (是 c 语言的)。
1  2  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1864 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 18ms · UTC 16:19 · PVG 00:19 · LAX 09:19 · JFK 12:19
Developed with CodeLauncher
♥ Do have faith in what you're doing.