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

答:连续数据没法区分帧结构。一步错 步步错。(原话是这么说的,连续数据没法区分帧结构。我以为这就是再说必须要有空闲位😂,原来是我理解错了吗)
150 天前
回复了 allmightbe 创建的主题 程序员 DDR 的交织原理有点不理解?
150 天前
回复了 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 的高效率了。

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

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

视频我是看了,只是我是 最开始,当时那一遍没太看懂。后面这两天 又看了好多乱七八糟文档文章。
151 天前
回复了 allmightbe 创建的主题 程序员 DDR 的交织原理有点不理解?
151 天前
回复了 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 图和实际硬件设计,是否能完全关联起来。也许这个粗箭头,只是一个逻辑上的概念。
151 天前
回复了 allmightbe 创建的主题 程序员 DDR 的交织原理有点不理解?
@liwufan #9
好的,有时间我看看你发的这两篇文章。

看了 micron 的几个 data sheet ,看起来,我理解的 prefetch 应该是对的。
151 天前
回复了 allmightbe 创建的主题 程序员 DDR 的交织原理有点不理解?
@liwufan #4
@Ayahuasec #5
纠正纠正,“ prefetch 是发生在 bank 内部的”,这句话可能有问题。
151 天前
回复了 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:不排除这个作者说的东西,是有问题的。因为别的文章没有提到过。
151 天前
回复了 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 )。

不知道上面我的理解对不对
152 天前
回复了 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   ·   我们的愿景   ·   实用小工具   ·   839 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 15ms · UTC 20:37 · PVG 04:37 · LAX 12:37 · JFK 15:37
Developed with CodeLauncher
♥ Do have faith in what you're doing.