首页> 中国专利> 单端口存储器件中的读和写冲突避免方法及其半导体芯片

单端口存储器件中的读和写冲突避免方法及其半导体芯片

摘要

描述了单端口存储器件中的读和写冲突避免方法及其半导体芯片。将来自第一写操作的第一数据对象划分成第一偶数子数据对象和第一奇数子数据对象。将来自第二写操作的第二数据对象划分成第二偶数子数据对象和第二奇数子数据对象。当第一写操作和第二写操作同时发生时,将第一偶数子数据对象存储到第一单端口存储器件并将第二奇数子数据对象存储到第二单端口存储器件。当第一写操作和第二写操作同时发生时,将第二偶数子数据对象存储到第一单端口存储器件并将第一奇数子数据对象存储到第二单端口存储器件。

著录项

  • 公开/公告号CN104681082A

    专利类型发明专利

  • 公开/公告日2015-06-03

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN201410687013.0

  • 申请日2014-11-25

  • 分类号

  • 代理机构北京市中咨律师事务所;

  • 代理人于静

  • 地址 美国纽约

  • 入库时间 2023-12-18 09:18:47

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-06-01

    授权

    授权

  • 2017-11-10

    专利申请权的转移 IPC(主分类):G11C11/413 登记生效日:20171023 变更前: 变更后: 申请日:20141125

    专利申请权、专利权的转移

  • 2015-07-01

    实质审查的生效 IPC(主分类):G11C11/413 申请日:20141125

    实质审查的生效

  • 2015-06-03

    公开

    公开

说明书

技术领域

本发明一般涉及单端口存储器件,并且更特别地涉及单端口存储器件 中的读和写冲突避免系统。

背景技术

单端口存储器件一次只可以允许一个写或读操作。单端口存储器件的 示例可以包括静态随机存取存储器(SRAM)、动态随机存取存储器 (DRAM)等等。SRAM是一种易失性存储器,其中存储的任何数据在提 供给SRAM的电源关闭时被擦除。SRAM单元经常由六个晶体管组成。 四个晶体管构成交叉耦合锁存器,其存储逻辑一或逻辑零。另外两个晶体 管用于在读和写操作期间存取SRAM单元。对SRAM的存取速度与某些 其它存储器相比而言很快,并且因此经常被用作高速缓冲存储器和缓冲器。 诸如SRAM之类的单端口存储器件经常被用作两个异步电路之间的缓冲 器。

发明内容

在实施例中,描述了一种在单端口存储器件中避免来自两个或更多独 立写操作的写冲突的方法。将来自第一写操作的第一数据对象划分成第一 偶数子数据对象和第一奇数子数据对象。将来自第二写操作的第二数据对 象划分成第二偶数子数据对象和第二奇数子数据对象。当第一写操作和第 二写操作基本上同时发生时,在单个写入中将第一偶数子数据对象存储到 第一单端口存储器件并将第二奇数子数据对象存储到第二单端口存储器 件。当第一写操作和第二写操作基本上同时发生时,利用单个写入将第二 偶数子数据对象存储到第一单端口存储器件并将第一奇数子数据对象存储 到第二单端口存储器件。

在另一实施例中,描述了包括模块的半导体芯片。该模块包括配置成 存储第一偶数子数据对象和第二偶数子数据对象的第一单端口存储器件。 该模块还包括配置成存储第一奇数子数据对象和第二奇数子数据对象的第 二单端口存储器件。该模块还包括串行器。该串行器配置成将来自第一写 操作的第一数据对象划分成第一偶数子数据对象和第一奇数子数据对象。 该串行器还配置成将来自第二写操作的第二数据对象划分成第二偶数子数 据对象和第二奇数子数据对象。当第一写操作和第二写操作基本上同时发 生时,该串行器还能够在单个写入中将第一偶数子数据对象存储到第一单 端口存储器件并将第二奇数子数据对象存储到第二单端口存储器件。此外, 该串行器配置成:当第一写操作和第二写操作基本上同时发生时,在单个 写入中将第二偶数子数据对象存储到第一单端口存储器件并将第一奇数子 数据对象存储到第二单端口存储器件。

在又一实施例中,描述了一种避免来自两个或更多独立读操作请求的 对单端口存储器件的读冲突的方法。从第一读请求器接收针对第一数据对 象的第一读请求。在与第一读请求基本上相同的时刻从第二读请求器接收 针对第二数据对象的第二读请求。从第一单端口存储器件读取第一数据对 象的第一偶数子数据对象。在与读取第一偶数子数据对象基本上相同的时 刻从第二单端口存储器件读取第二数据对象的第二奇数子数据对象。从第 二单端口存储器件读取第一数据对象的第一奇数子数据对象。在与读取第 一奇数子数据对象基本上相同的时刻从第一单端口存储器件读取第二数据 对象的第二偶数子数据对象。组合第一偶数子数据对象和第一奇数子数据 对象以形成第一数据对象。组合第二偶数子数据对象和第一奇数子数据对 象以形成第二数据对象。

附图说明

将参考附图从随后的详细说明中更好地理解实施例,在附图中:

图1示出根据实施例的半导体芯片的框图,在所述半导体芯片上,支 持单端口存储器件的模块被配置成避免写冲突和读冲突。

图2示出根据实施例的模块的框图,其中单端口存储器件位于所述模 块上并且所述模块被配置成避免单端口存储器件上的写冲突和读冲突。

图3示出根据实施例通过图2的模块的数据对象流的时序图。

图4示出根据实施例的用于避免单端口存储器件中的写冲突的流程 图。

图5示出根据实施例的模块的框图,在所述模块上,单端口存储器件 被配置成避免数据对象的写冲突,其中所述数据对象未被划分成子数据对 象。

图6示出根据实施例的发送写操作的数据发送器的启动逻辑。

图7示出根据实施例的通过诸如图5的模块之类的模块的数据对象流 的时序图。

图8示出根据实施例的用于避免诸如图5的模块之类的模块中的单端 口存储器件中的写冲突的方法的流程图。

图9示出根据各个实施例的用于图5的模块的读操作电路。

具体实施方式

附图中示出的特征不一定按比例绘制。熟知的组件和处理技术的描述 被省略以避免不必要地模糊所公开的实施例。实施例的描述仅通过示例的 方式提供,并且不旨在限制所要求保护的发明的范围。相同的附图标记可 以在附图和详细描述中使用以指代相同的设备、部分、组件、步骤、操作 等等。

本文的实施例提供了一种避免来自两个或更多数据对象发送器的单端 口存储器件写冲突的半导体芯片和方法,所述两个或更多数据对象发送器 执行可能同时发生的写操作从而导致写冲突。可以通过将写操作的数据对 象划分成两个或更多子数据对象来避免写冲突。可以对每个写操作进行划 分、并且写操作的每个子数据对象可以具有专用的单端口存储器件。每个 专用单端口存储器件可以存储来自每个写操作的一种类型的子数据对象。 这允许写操作同时到达单端口存储器件,以便将来自第一写操作的第一类 型子数据对象写入第一单端口存储器件,同时将来自第二写操作的第二类 型子数据对象写入第二单端口存储器件。在实施例中,可以按照防止相同 的单端口存储器件上的写冲突的目的的必要,通过将第一单端口存储器件 专用于偶数数据对象、并将第二单端口存储器件专用于奇数数据对象,来 对准和延迟数据对象。

其他实施例包括:在基本上相同的时刻将偶数数据对象存储到第一单 端口存储器并将奇数数据对象存储到第二单端口存储器。来自两个或更多 发送器的偶数和奇数数据对象在存储到单端口存储器时可以被交织 (interleave)以便不产生写冲突。本文的其他实施例提供了避免两个或更 多读请求器对单端口存储器的单端口存储器读冲突的半导体芯片和方法。

在单端口存储器件的某些读/写环境中,写冲突可能会发生。当单端口 存储器件中两个或更多写操作基本上同时到达时可能会发生写冲突。写冲 突会在试图被执行的操作中产生错误。单端口存储器件可以接收两个或更 多写操作,因为它们可能正在接收来自两个或更多独立源的写操作,其中 所述两个或更多独立源共享该单端口存储器件的资源。出于诸如为了降低 功耗和尺寸限制之类的多种原因,共享单端口存储器件可能是有利的。

在单端口存储器件中不但可能有写冲突而且也可能发生读冲突。在基 本上相同的时刻有多个读请求器从共享的单端口存储器请求数据对象时, 可能会发生读冲突。读冲突也会在试图被执行的操作中产生错误。

本公开的各方面基于这样的认识:单端口存储器件中的写冲突可以通 过使用多端口存储器来应对,其中多端口存储器允许同时向存储器的多于 一行进行写入。每个写操作源可以具有专用写端口,这将允许同时向存储 器的不同行进行写入。然而,在功率、面积、可测试性、产出和开发工作 等方面,多端口存储器会比单端口存储器件更昂贵。避免单端口存储器件 中的写冲突的另一认识是:当有来自独立源的多个写操作时使用两倍那么 多的单端口存储器件。每个源将得到其自己的专用单端口存储器件组。附 加的控制逻辑可以用来跟踪哪个写入源拥有实际的单端口存储器件。使单 端口存储器件的数量成为两倍也会使功率、面积和产出方面的成本成为两 倍。这些认识由于其避免写冲突的性质(多端口和双倍数量的单端口存储 器)而也会预期到读冲突的避免。

在单端口存储器件中可能会发生写冲突的情形的示例是在计算机处理 器芯片或其他半导体芯片上。诸如三级(L3)高速缓存之类的处理器芯片 上的数据发送器(本文中也被称为写入源)可以被分割成两个,这允许来 自两个独立的写入源(例如,第一L3高速缓存和第二L3高速缓存)的第 一和第二写操作。分割的L3高速缓存可以连接到诸如PCI桥控制器之类 的包含单端口存储器件的模块。PCI桥控制器可以包括针对从L3高速缓 存取回数据对象的每个I/O取回有限状态机的专用缓冲器。每个缓冲器可 以具有256字节的容量。缓冲器不是一次被全部写入而是以4:1周期以16 字节被写入。在示例模块中可以有总共32个缓冲器。出于有效率的功率和 面积的原因,多个缓冲器可以共享单端口存储器件,诸如SRAM或DRAM。 对于所使用的总共八个SRAM而言,在每个SRAM中可以有四个缓冲器。 SRAM内的缓冲器可以与对通过分割而生成的L3高速缓存中的任何一个 的取回相关联。两个L3高速缓存是独立的、并且具有数据对象的响应可 能在任何时刻到达。当针对共享同一个单端口SRAM的两个缓冲器的两个 取回响应(也被称为写操作)同时从第一L3高速缓存和第二L3高速缓存 到达时,可能会发生写冲突。

图1示出根据本公开实施例的半导体芯片100的框图,在半导体芯片 100上,支持单端口存储器件120的模块115被配置成避免写冲突。半导 体芯片100例如可以是计算机处理芯片。半导体芯片100可以包括统称为 105的一个或多个处理器核。图1示出四个核105a、105b、105c和105d。 半导体芯片100可以包括第一数据发送器110a和第二数据发送器110b, 本文中统称为数据发送器110。在实施例中,数据发送器110可以是诸如 L3高速缓存之类的高速缓存。每个数据发送器110可以被核105共享。与 模块115通信的数据发送器110可以向模块115发送写操作。模块115可 以包括一个或多个单端口存储器件(SPM)120。模块115可以是外围组 件互连(PCI)桥控制器,然而,也可以考虑包括单端口存储器件120的 其它模块。模块115可以向一个或多个读请求器输出。在实施例中,可以 使用多个半导体芯片来包含所提及的组件。

本文的实施例可以提供模块115,其被配置成允许从数据发送器110 向单端口存储器件120的写操作而不会发生写冲突。可以通过将来自数据 发送器110的写操作的数据对象划分成两个或更多子数据对象来避免写冲 突。可以针对每个写操作进行划分、并且写操作的每个子数据对象可以具 有专用单端口存储器件120。每个专用单端口存储器件120存储来自每个 写操作的一种类型的子数据对象。这允许写操作同时到达单端口存储器件 120,以便将来自第一写操作的第一类型子数据对象写入第一单端口存储器 件,同时将来自第二写操作的第二类型子数据对象写入第二单端口存储器 件。在实施例中,可以按照防止相同的单端口存储器件上的写冲突的目的 的必要,通过将第一单端口存储器件专用于偶数数据对象、并将第二单端 口存储器件专用于奇数数据对象,来对准和延迟数据对象。当存在来自单 个数据请求器的数据请求时,模块115可以并行地输出数据对象的偶数和 奇数子数据对象以便合并成整个数据对象。在其他实施例中,当存在同时 来自两个或更多读请求器的两个或更多数据对象请求时,模块115可以配 置成发送两个数据对象而不导致读冲突。

图2示出根据实施例的模块115的框图,其中单端口存储器件120位 于模块115中并且该模块115被配置成避免该单端口存储器件120上的写 冲突和读冲突。按照某些实施例,模块115可以包括用于每个写操作的串 行器,诸如串行器205a和205b,其被统称为串行器205。模块115可以包 括多个单端口存储器件120(120a、120b、120c和120d)、写控制器215、 读控制器220、写电路225和读电路230。第一写操作可以来自第一数据发 送器110a,诸如高速缓存或者可产生写操作的任何其它电路。第二写操作 可以来自第二数据发送器110b,诸如高速缓存或者可产生写操作的任何其 它电路。第一写操作可以产生第一数据对象。第二写操作可以产生第二数 据对象。数据对象可以是数据发送器110和单端口存储器件120之间的接 口总线的自然宽度。在从L3高速缓存向PCI桥控制器的写操作的情况中, 数据对象例如可以是16个字节。

一旦由模块115从数据发送器110接收到,第一数据对象可以进入第 一串行器205a。第二数据对象可以进入第二串行器205b。串行器205可以 将数据对象划分成多个子数据对象。在图示的示例中,串行器205可以是 2:1的串行器,其可以要求单端口存储器件以常规总线速度两倍的速度进行 操作。串行器205可以将数据对象划分成两半成为偶数和奇数子数据对象。 这可以从第一数据对象产生第一偶数子数据对象和第一奇数子数据对象。 第二偶数子数据对象和第二奇数子数据对象可以由第二串行器205b从第 二数据对象产生。在给定的示例中,16字节的数据对象可以被划分成8字 节的子数据对象。偶数子数据对象可以发送到专用于偶数子数据对象的第 一单端口存储器件,并且奇数子数据对象可以发送到专用于奇数子数据对 象的第二单端口存储器件。

子数据对象可以被写入到多个单端口存储器件120。在实施例中,单 端口存储器件120可以是SRAM。每个单端口存储器件120可以被指定用 于偶数子数据对象或者奇数子数据对象。每个单端口存储器件120可以包 含多个缓冲器。单端口存储器件120a和120b可以包括八个缓冲器。每个 缓冲器的一半可以在每个单端口存储器件120a和120b中。例如,单端口 存储器件120a可以包括用于偶数子数据对象的偶数缓冲器(0),并且单 端口存储器件120b可以包括用于该数据对象的奇数部分的奇数缓冲器 (0)。如所示,写电路225可以利用示例性写多路复用器240调节进入单 端口存储器件120的子数据对象。写控制器215可以与单端口存储器件120 互连,以便向单端口存储器件提供写使能信号和写地址。写控制器可以与 数据发送器110可操作地通信。数据发送器110可以在执行写入时挑选写 控制器215。写控制器215也可以与每个写多路复用器240通信(为了附 图的清楚起见,在图2中写控制器215与写电路225通信)以操纵子数据 对象。

对于针对单端口存储器件120的每个写使能周期,写操作可以被设置 成只写入奇数子数据对象或偶数子数据对象。这可以被实现,使得第一写 操作并不与第二写操作同等地对准。在图示的示例中,第一数据发送器 110a可以写入偶数子数据对象,而第二数据发送器110b写入奇数数据对 象。该配置可以确保不会发生单端口存储器件写冲突。这是因为,当偶数 子数据对象从第一数据发送器110a被写入到第一单端口存储器件120a时, 奇数子数据对象从第二发送器110b被写入到第二单端口存储器件120b, 并且当奇数子数据对象从第一数据发送器110b被写入时,反之亦然。

当要从单端口存储器件120中提取数据对象时,读控制器220可以管 理获取子数据对象的读操作。读控制器220可以与每个单端口存储器件120 互连。读控制器220可以被用来向单端口存储器件120提供读使能信号和 读地址。读控制器220可以接收来自一个或多个读请求器250a和250b的 读请求。读控制器220也可以与读电路230通信。读控制器220可以控制 读电路230的多路解复用器245以及解串器235a和235b以进行适当的读 取。可能会存在多个读请求器同时请求一个或多个数据对象,这可能会导 致读冲突。图2示出当存在两个读请求器时的读电路230的实施例。在各 种实施例中,从一个读请求器一次可以发生一次读取。图5示出下面进一 步解释的读电路545,其可以用于模块115以取代当存在一个读请求器时 的读电路230。当存在一个读请求器时,奇数和偶数子数据对象可以从针 对第一或第二数据对象的单端口存储器件120中被提取或发送。可以并行 地提取奇数和偶数子数据对象,以便取决于哪个数据对象被请求而形成完 整的第一或第二数据对象。

在其它实施例中,如图2所示,可以存在两个读请求器。可能有来自 第一读请求器250a的针对数据对象的第一读取请求,同时有来自第二读请 求器250b的针对存储在至少一个相同的单端口存储器中的数据对象的第 二请求。这会导致与上面解释的写冲突相类似的读冲突。单端口存储器120 可以与相应的多路解复用器245通信。每个多路解复用器245可以与第一 解串器235a和第二解串器235b通信。读控制器220可以管理多路解复用 器245以及解串器235a和235b的输出。第一读请求器250a可以耦合到第 一解串器235a的输出、并且第二读请求器250b可以耦合到第二解串器 235b的输出。两个读请求器可以耦合到读控制器220,用于用信号通知读 取。

在各种实施例中,第一和第二数据对象可以被存储在至少一个相同的 单端口存储器(其可以是针对偶数子数据对象的单端口存储器120a和针对 奇数子数据对象的单端口存储器120b)中。第一读请求器可以请求第一数 据对象,同时第二读请求器请求第二数据对象。如果出现两个读请求,则 模块115的读控制器220可以引导来自偶数单端口存储器120a的第一数据 对象的第一偶数子数据对象以使其发送到第一解串器235a。另外,来自奇 数单端口存储器120b的第二数据对象的第二奇数子数据对象可以被发送 到第二解串器235b。这可以全部发生在读取的前半周期。在读取的后半周 期期间,模块115的读控制器220可以引导来自偶数单端口存储器120a 的第二数据对象的第二偶数子数据对象以使其发送到第二解串器235b。此 外,来自偶数单端口存储器120a的第一数据对象的第一奇数子数据对象可 以被发送到第一解串器235a。在第一解串器235a处,可以组合第一奇数 子数据对象和第一偶数子数据对象,以向第一读请求器输出第一数据对象。 在第二解串器235b处,第二偶数子数据对象可以与第二奇数子数据对象组 合,以向第二读请求器输出第二数据对象。

图3示出根据实施例通过模块115的数据对象流的时序图300。参考 标记350指向数据对象的写/读的写操作部分。参考标记360指向数据对象 的写/读的读操作部分。对于写操作350,在时刻t0,第一写操作可以向模 块115发送第一数据对象305a,并且在基本相同的时刻,第二写操作可以 发送第二数据对象305b。第一写操作可以来自于第一发送器110a(图1)。 第二写操作可以来自于第二发送器110b(图1)。

在时刻t1,第一数据对象305a和第二数据对象305b可以都进入它们 各自的第一串行器205a和第二串行器205b。第一串行器205a可以将第一 数据对象305a划分成第一偶数子数据对象310a和第一奇数子数据对象 315a。例如,一个16B数据对象可以划分成两个8B子数据对象。在其它 实施例中,第一串行器205a可以将第一数据对象305a划分成任意数量的 子数据对象。另外,第二串行器205b可以将第二数据对象305b划分成第 二偶数子数据对象310b和第二奇数子数据对象315b。在其它实施例中, 第二串行器205b可以将第二数据对象305b划分成任意数量的子数据对 象。

在时刻t2,第一偶数子数据对象310a可以被写入到支持偶数子数据对 象的单端口存储器件。第二奇数子数据对象315b可以被写入到支持奇数子 数据对象的单端口存储器件。在其它实施例中,第二奇数子数据对象315b 的时序可以在之后发生。第二串行器205b可以从第一串行器205a被延迟 半个周期,并以在时刻t3被写入的第二偶数子数据对象310b开始,然后 使第二奇数子数据对象315b被随后写入。

在时刻t3,第一奇数子数据对象315a可以被写入到支持奇数子数据对 象的单端口存储器件。第二偶数子数据对象310b可以被写入到支持偶数子 数据对象的单端口存储器件。在子数据对象正被写入到单端口存储器件时 使子数据对象交替可以避免从独立的发送器基本同时地到达模块的数据对 象的写冲突。

参考标记360指向来自单端口存储器件的子数据对象的读操作。读操 作可以包括来自两个读请求器的两个独立的读请求。在时刻t4,读控制器 220(图2)可以接收来自第一读请求器的对第一数据对象305a的第一读 请求。读控制器220还可以接收来自第二读请求器的对第二数据对象305b 的第二读请求。读控制器220可以发布针对第一数据对象305a的第一读命 令、以及针对第二数据对象305b的第二读命令。在读命令的前半周期期间, 奇数和偶数单端口存储器件可以输出第一数据对象305a的第一偶数子数 据对象310a和第二数据对象305b的第二奇数子数据对象315b。在其它实 施例中,可能只有一个读请求器,其时序在图7中示出。

在时刻t5,在读命令的后半周期期间,读控制器220可以发布针对从 奇数单端口存储器120b要发送的第一数据对象305a的第一奇数子数据对 象315a的命令。第二数据对象305b的第二偶数子数据对象310b可以从 奇数单端口存储器120a发送。

在时刻t6,第一偶数子数据对象310a和第一奇数子数据对象315a可 以进入第一读请求器的第一解串器235a(图2)。还是在时刻t6,第二偶 数子数据对象310b和第二奇数子数据对象315b可以进入第二读请求器的 第二解串器235b。

在时刻t7,第一解串器235a可以向第一读请求器输出第一偶数和奇数 子数据对象310a和315b,其被串接起来作为第一数据对象305a。此外, 在时刻t7,第二解串器235b向第二读请求器输出第二偶数和奇数子数据 对象310a和315b,其被串接起来作为第二数据对象305a。当有两个或更 多读请求器时,通过将多于一个的数据对象分裂开并将每个数据对象的子 部分一起发送、以及再次组合适当的部分来交织多于一个的数据对象,可 以避免来自单端口存储器的读冲突。

图4示出根据本公开实施例的用于避免单端口存储器件中的写冲突的 方法400的流程图。方法400可以开始于操作405。在操作405中,可以 将第一数据对象划分成第一偶数子数据对象和第一奇数子数据对象。在实 施例中,第一数据对象可以产生于第一写操作。第一写操作可以从诸如高 速缓存(L3高速缓存)或者任何其它电路源之类的第一数据发送器向诸如 SRAM或DRAM之类的单端口存储器件发送。在实施例中,第一数据对 象可以被均匀地划分成第一偶数子数据对象和第一奇数子数据对象。在其 它实施例中,如何划分第一数据对象、是被均匀地还是不均匀地划分、以 及将其进行多少次划分(例如,三次或四次)都是可预期到的。第一数据 对象的划分可以由第一串行器来完成。

在操作410中,可以将第二数据对象划分成第二偶数子数据对象和第 二奇数子数据对象。在实施例中,第二数据对象可以产生于第二写操作。 第二写操作可以从诸如高速缓存(L3高速缓存)或者任何其它电路数据对 象源之类的第二数据发送器向诸如SRAM或DRAM之类的单端口存储器 件发送。在实施例中,第二数据对象可以被均匀地划分成第二偶数子数据 对象和第二奇数子数据对象。在其它实施例中,如何划分第二数据对象、 是被均匀地还是不均匀地划分、以及将其进行多少次划分(例如,三次或 四次)都是可预期到的。第二数据对象的划分可以由第二串行器来完成。

在操作415中,可以将第一偶数子数据对象存储在第一单端口存储器 件中、并且可以将第二奇数子数据对象存储在第二单端口存储器件中。在 操作420中,可以将第二偶数子数据对象存储在第一单端口存储器件中、 并且可以将第一奇数子数据对象存储在第二单端口存储器件中。当将第一 和第二奇数子数据对象写入到第二单端口存储器件时,第一和第二数据对 象可以被对准,使得第一和第二奇数子数据对象的写入不会在同一时刻发 生。在各种实施例中,第一和第二写操作可以被对准,使得当第一偶数子 数据对象正被写入到第一单端口存储器件时,第二奇数子数据对象正被写 入到第二单端口存储器件。同样,当第一奇数子数据对象正被写入到第二 单端口存储器件时,那么第二偶数子数据对象正被写入到第一单端口存储 器件。

图5示出根据实施例的模块500的框图,在所述模块500上,单端口 存储器件被配置成避免数据对象的写冲突,其中所述数据对象未被划分成 子数据对象。按照某些实施例,模块500可以用作图1的模块115。模块 500可以配置成在无串行器且不使用子数据对象的情况下进行操作。在模 块500中可以使用数据对象的常规总线宽度。取决于最低阶(lowest order) 地址位,每个数据对象可以是奇数或偶数。此外,数据总线可以按照其常 规数据宽度和速度在模块500中运行。

在此所讨论的各种实施例(包括结合图2和5所讨论的那些)可能对 所使用的逻辑的特定类型和数量具有不同的要求。例如,第一数据发送器 505a、第二数据发送器505b以及模块500在图5中示出。第一数据发送器 505a和第二数据发送器505b可以包括启动逻辑以允许模块500的逻辑正 确地操作。启动逻辑的示例在图6中示出、并在下面进一步解释。模块500 可以包括第一可选延迟510a和第二可选延迟510b,其在此可以被统称为 可选延迟510。模块500可以包括第一写多路复用器520a和第二写多路复 用器520b,其可以被统称为写多路复用器520。模块500还可以包括多个 单写端口存储器。四个单端口存储器件在图5中示出作为示例,即单端口 存储器件525a、525b、525c和525d。单端口存储器件在此可以被统称为 单端口存储器件525。模块500还可以包括写控制器530和读控制器535。 模块500还可以包括第一读多路复用器540a和第二读多路复用器540b, 其在此可以被统称为读多路复用器540。

第一数据发送器505a和第二数据发送器505b可以可通信地与模块 500的相应的第一可选延迟510a和第二可选延迟510b相耦合。数据发送 器505可以包括修改的启动逻辑,其在图6中进一步解释。启动逻辑可以 被用来确保来自发送器505的数据传送到达模块500时以相同的方式对准。 每个数据传送可以包含多个数据对象。数据对象可以按照它们将被发送到 单端口存储器的顺序交替作为偶数和奇数数据对象。数据发送器505可以 等待以便在两个发送器具有相同数量的数据对象之后传送数据对象。一旦 数据传送被模块500接收并以相同的方式对准,则可选延迟可以保证它们 使数据对象被不同地对准且在基本上相同的时刻到达实际的单端口存储器 件525。例如,可选延迟510可以确保:在其它数据发送器发送其奇数数 据对象时,一个数据发送器505将发送其偶数数据对象到单端口存储器件 525。延迟是可选的,因为零是有效的偶数延迟。例如,当两个发送器都具 有相同数量的数据对象要写入时,一个发送器可以没有延迟地立即开始, 而另一发送器可以被延迟一个数据对象。

第一和第二可选延迟510a和510b分别可通信地与偶数多路复用器 520a和奇数多路复用器520b耦合。偶数多路复用器520a可以接收来自任 何一个数据发送器505的偶数数据对象、并且奇数多路复用器520b可以接 收奇数数据对象。偶数多路复用器520a可以可通信地耦合到第一偶数单端 口存储器件525a和第二偶数单端口存储器件525b。第一偶数单端口存储 器件525a(最高阶位地址)可以接收偶数数据对象的上半部分、并且第二 偶数单端口存储器件525b可以接收偶数数据对象的下半部分(最低阶位地 址)。同样地,第一奇数单端口存储器件525c可以接收奇数数据对象的上 半部分、并且第二奇数单端口存储器件525d可以接收奇数数据对象的下半 部分。在其它实施例中,可以使用双倍宽的单端口存储器件使得每个单端 口存储器件具有与偶数或奇数数据对象相同的宽度。

数据发送器505还可以与写控制器530可操作地通信。写控制器可以 从数据发送器505接收写命令。写控制器530可以与每个单端口存储器件 525可通信地耦合、并且可以发信号传送写地址和针对该写地址的写使能。 写控制器530可以同步用于数据对象写入的上半部分和下半部分。偶数对 的单端口存储器件可以被写控制器530视为一个单端口存储器件。奇数对 的单端口存储器件525也可以被写控制器530视为一个单端口存储器件。

图5示出当存在单个读请求器时来自单端口存储器的读操作的实施 例。读控制器535可以与每个单端口存储器件525可通信地耦合、并且当 从读请求器550接收到读请求时可以发信号传送针对单端口存储器件525 内的数据对象的读地址和读使能。读请求器550可以可通信地耦合到读控 制器。读控制器535可以在基本上相同的时刻为所请求的数据对象的上半 部分和下半部分发信号。偶数对的单端口存储器件可以被读控制器535视 为一个单端口存储器件。同样,奇数对的单端口存储器件525可以被读控 制器535视为一个单端口存储器件。数据对象可以以信号形式发送到读电 路545,其可以包含用于上半部分数据对象的上部读多路复用器540a和用 于下半部分数据对象的下部读多路复用器540b。在被请求时,偶数数据对 象的上半部分和下半部分可以一起以信号形式发送。两个半部分可以通过 被并行地发送而串接起来。同样,在奇数数据对象被请求时,奇数数据对 象的上半部分和下半部分可以一起以信号形式发送。两个半部分可以通过 被并行地发送而串接起来。在各种实施例中,当存在两个或更多读请求器 时,读电路545可以用图2的读电路230替换。

现在参考图9,图9示出模块500,其中存在来自系统的两个读请求器。 具体地,图9示出包括读操作的模块500的部分。偶数单端口存储器525a 和525b可以可通信地耦合到第一多路解复用器902a。奇数单端口存储器 525c和525d可以耦合到第二多路解复用器。当读取每对单端口存储器时, 单端口存储器的上半部分和下半部分的输出可以在到达它们各自的多路解 复用器902a和902b之前被串接。取决于数据对象被指定去往的目的地, 多路解复用器902可以将数据对象路由到第一数据发送器910a或第二数据 发送器910b。读控制器可以控制从单端口存储器525以及读电路904的多 路解复用器902的读取何时发生。

第一读请求器910a和第二读请求器910b可以在基本相同的时刻从单 端口存储器525a请求读取。第一和第二请求器910a和910b可以具有延迟 逻辑,其通过在第一和第二读请求器之间交替奇数和偶数数据对象来确保 两个或更多读请求器没有读冲突。延迟逻辑可以将请求器中的一个对数据 对象的请求延迟一个周期。一个请求器可以接收偶数数据对象,而另一请 求器接收奇数数据对象。在各种实施例中,读控制器906可以包含接收逻 辑,使得当两个请求器910a和910b在基本上相同的时刻请求数据对象时, 读控制器906可以在奇数数据对象正被第二数据请求器910b读取时,引导 偶数数据对象以使其由第一读请求器910a读取。

图6示出根据实施例的数据发送器505的示例性启动逻辑600。启动 逻辑600包括数据传送逻辑605、偶数状态锁存器610、与门615、反相器 620、以及接收数据总线请求625的数据传送仲裁器630。数据传送逻辑605 可以是对数据对象进行计数、并当数据总线可用时发信号通知数据传送仲 裁器630的逻辑。当数据总线对模块500可用时,数据传送逻辑605可以 用逻辑一发信号通知与门615。当数据对象发送器505处于偶数周期(例 如4:1周期)时,偶数状态锁存器610发信号向与门615通知逻辑一。当 数据总线可用、并且发送器505处于偶数周期时,则数据总线请求626可 以被数据传送仲裁器630许可并发送给模块500。

在某些实施例中,如果有奇数个数据对象,则在可选延迟510处可以 延迟具有奇数个数据对象的数据传送以等待一个数据对象,以便从在偶数 格(even grid)开始的偶数数据传送开始。在各种实施例中,可以在数据 发送器505的一个中用奇数状态锁存器替换偶数状态锁存器610。这可以 允许从数据发送器505发送的数据对象在奇数和偶数数据对象之间交替, 而无需可选延迟电路510。

图7示出根据实施例通过模块500的数据对象流的时序图700。参考 标记750示出对模块500的单端口存储器525的写操作,而参考标记760 示出来自模块500的单端口存储器525的读操作。读操作示出来自单个读 请求器的读请求。在时刻t0,具有至少第一偶数数据对象705a和第一奇数 数据对象707a的第一写操作可以从第一数据发送器505a发送。在与第一 写操作从第一发送器505a被发送的时刻基本上相同的时刻,具有至少第二 偶数数据对象705b和第一奇数数据对象707a的第二写操作可以从第二数 据发送器505b发送。写操作可以被发送到可选延迟510。

在时刻t1,可选延迟510可以延迟写操作之一,使得来自一个写操作 的偶数数据对象不与来自另一写操作的另一偶数数据对象同时写入到单端 口存储器件。同样地,可选延迟510可以延迟写操作,使得两个奇数数据 对象不会在基本上相同的时刻被写入到单端口存储器件。在时序图700所 示的示例中,可以延迟第二写操作。

在时刻t2,来自第一写操作的第一偶数数据对象705a可以被写入到专 用于偶数数据对象的单端口存储器件。第二偶数数据对象705b可以被延 迟,使得它不会与第一偶数数据对象705a同时写入到单端口存储器件。

在时刻t3,第二偶数数据对象705b可以被写入到专用于偶数数据对 象的单端口存储器件。此外,在时刻t3,第一奇数数据对象707a可以被写 入到专用于奇数数据对象的单端口存储器件。

在时刻t4,第二奇数数据对象707b可以被写入到专用于奇数数据对 象的单端口存储器件。延迟可以确保对相同单端口存储器件的数据对象写 入在不同的时刻发生,这可以避免单端口存储器件中的写冲突。在实施例 中,每个奇数和偶数数据对象可以划分成专用于数据对象的下半部分和上 半部分的分离的单端口存储器。

现在参考由附图标记760标明的从单个读请求器向单端口存储器件的 单个读请求。在时刻t5,读请求器可以做出对第二偶数数据对象的请求。 第二偶数数据对象可能已经被划分成存储在第一偶数单端口存储器525a (图5)中的上半部分710a以及存储在第二偶数单端口存储器525b中的 下半部分710b。当存在请求时,读控制器535可以发信号通知包含第二偶 数数据对象705b的上半部分710a和下半部分710b的单端口存储器。单 端口存储器可以在基本上相同的时刻发送上半部分710a和下半部分710b。

在时刻t6,上半部分710a和下半部分710b在被并行地发送时可以被 串接。串接的两个半部分可以形成完整的第二偶数数据对象705b。第二偶 数数据对象705b可以继续去往读请求器。

图8示出根据实施例的用于避免图5的模块500中的单端口存储器件 中的写冲突的流程图。方法800可以开始于操作805。在操作805中,模 块可以从第一数据发送器接收具有第一偶数数据对象和第一奇数数据对象 的第一写操作。

在操作808中,模块还可以从第二数据发送器接收具有第二偶数数据 对象和第二奇数数据对象的第二写操作。第一写操作和第二写操作可以被 模块在基本上相同的时刻接收并被相同地对准。

在操作810中,可以延迟第二写操作,使得第一偶数数据对象不会与 第二偶数数据对象基本上同时地写入到第一单端口存储器件。该延迟还确 保第一奇数数据对象不会在与第二奇数数据对象被写入的时刻基本上相同 的时刻写入到第二单端口存储器件。

在操作815中,可以将第一偶数数据对象写入到第一单端口存储器件、 并且可以将第一奇数数据对象写入到第二单端口存储器件。另外,可以将 第二偶数数据对象写入到第一单端口存储器件、并且可以将第二奇数数据 对象写入到第二单端口存储器件。

尽管已经参考其特定实施例描述了本发明,但本领域技术人员在不脱 离实施例的范围和精神的情况下将能够对所描述的各种实施例做出各种修 改。在此所使用的术语和描述仅仅通过举例说明的方式来阐述,并且并非 意在作为限制。本领域技术人员将意识到在随附的权利要求及其等效物中 所定义的实施例的精神和范围内可以存在这些及其他变型。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号