CN116266146A - 多核处理器和存储装置 - Google Patents
多核处理器和存储装置 Download PDFInfo
- Publication number
- CN116266146A CN116266146A CN202211629266.3A CN202211629266A CN116266146A CN 116266146 A CN116266146 A CN 116266146A CN 202211629266 A CN202211629266 A CN 202211629266A CN 116266146 A CN116266146 A CN 116266146A
- Authority
- CN
- China
- Prior art keywords
- address
- core
- memory
- message queue
- cores
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1054—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1663—Access to shared memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
Abstract
提供多核处理器和存储装置。所述多核处理器包括多个核、共享存储器、多个地址分配器和总线。共享存储器具有消息队列,消息队列包括用于在所述多个核之间传输消息的多个存储器区域。所述多个地址分配器被配置为:每次与所述多个存储器区域之中的参考存储器区域对应的预定范围内的地址从所述多个核之中的对应核被接收到时,通过将根据参考存储器区域的访问计数确定的偏移应用于所述预定范围内的所述地址来控制所述多个存储器区域按顺序被访问。总线被配置为将所述多个核、共享存储器和所述多个地址分配器彼此连接。
Description
本申请要求于2021年12月17日在韩国知识产权局提交的第10-2021-0181443号韩国专利申请的优先权,所述韩国专利申请的公开通过引用全部包含于此。
技术领域
本公开的示例实施例涉及多核处理器和包括多核处理器的存储装置。
背景技术
最近,由于对提高单核处理器的性能的限制,对多核处理器的需求已经提高。过去,积极进行对通过时钟速度的性能提高的研究,以提高处理器的性能。然而,最近,已经积极进行与多核处理器有关的研究(例如,通过增加包括在多核处理器中的处理核的数量来提高性能)。
多核处理器装置可包括用于执行进程间通信(IPC)共享存储器。也就是说,多核处理器的第一核可将要由多核处理器的第二核处理的数据存储在共享存储器中。第二核可获得存储在共享存储器中的数据,并且可处理数据。
发明内容
本公开的示例实施例提供多核处理器和包括多核处理器的存储装置。
本公开的示例实施例提供多核处理器,在多核处理器中,通过允许核快速地访问共享存储器,核之间的进程间通信(IPC)可快速地被执行。
根据本公开的示例实施例,一种多核处理器包括多个核、共享存储器、多个地址分配器和总线。共享存储器具有消息队列,消息队列包括在所述多个核之间传输消息的多个存储器区域。所述多个地址分配器被配置为:每次与所述多个存储器区域之中的参考存储器区域对应的预定范围内的地址从所述多个核之中的对应核被接收到时,通过将根据参考存储器区域的访问计数确定的偏移应用于所述预定范围内的所述地址来控制所述多个存储器区域按顺序被访问。总线被配置为将所述多个核、共享存储器和所述多个地址分配器彼此连接。
根据本公开的示例实施例,一种多核处理器包括执行进程间通信(IPC)的第一核和第二核、共享存储器以及第一地址分配器。共享存储器由第一核和第二核共享。第一地址分配器被配置为:执行地址转换操作以供第一核访问共享存储器。第一核被配置为:请求包括来自共享存储器的多个存储器区域的第一消息队列。当第一消息队列被分配给共享存储器时,第一核对多个消息重复执行针对所述多个存储器区域之中的参考存储器区域的存储指令。第一地址分配器被配置为:执行地址转换操作,使得所述多个消息能够基于第一核关于参考存储器区域的访问计数而按顺序被存储在所述多个存储器区域中。
根据本公开的示例实施例,一种存储装置包括:存储器装置,被配置为:存储数据;以及存储控制器,被配置为:控制存储器装置。存储控制器包括:多个核;共享存储器,具有在所述多个核之间传送消息的多个消息队列;以及多个地址分配器,被配置为:执行地址转换操作,使得所述多个核能够访问共享存储器。所述多个地址分配器中的一个被配置为:当所述多个消息队列中的一个消息队列的参考存储器区域的地址从所述多个核之中的对应核被接收到时,执行地址转换操作,使得所述一个消息队列的多个存储器区域基于参考存储器区域的访问计数来访问。
附图说明
通过参照附图详细描述本公开的示例实施例,本公开的以上和其他特征将变得更加清楚,其中:
图1是示出根据本公开的示例实施例的多核处理器的框图;
图2和图3是示出根据本公开的示例实施例的多核处理器的进程间通信(IPC)操作的框图;
图4是示出根据本公开的示例实施例的地址分配器的结构的框图;
图5是示出根据本公开的示例实施例的地址分配器的操作的框图;
图6是示出根据本公开的示例实施例的操作多核处理器的IPC操作的方法的流程图;
图7和图8是示出根据本公开的示例实施例的使用地址分配器在多个核之间交换消息的操作的框图;
图9是示出根据本公开的示例实施例的主机存储系统的框图;
图10是示出根据本公开的示例实施例的包括在存储控制器中的CPU的结构的框图;以及
图11是示出根据本公开的示例实施例的应用了存储装置的系统的示图。
具体实施方式
在下文中将参照附图更全面地描述本公开的示例实施例。在整个附图中,同样的参考标记可表示同样的元件。
将理解,术语“第一”、“第二”、“第三”等在此用于将一个元件与另一个区分开,并且元件不受这些术语限制。因此,示例实施例中的“第一”元件可在另一示例实施例中被描述为“第二”元件。
应当理解,除非上下文另有清楚地指示,否则每个示例实施例内的特征或方面的描述通常应被认为可用于其他示例实施例中的其他类似特征或方面。
如在此所使用的,除非上下文另有清楚地指示,否则单数形式旨在也包括复数形式。
图1是示出根据示例实施例的多核处理器的框图。
示例实施例中的多核处理器可包括两个或更多个核。在图1中所示的示例中,多核处理器100可包括多个核111(例如,核1)和112(例如,核2)、多个地址分配器121(例如,地址分配器1)和122(例如,地址分配器2)以及共享存储器130。多个核111和112、多个地址分配器121和122以及共享存储器130可彼此连接,并且可通过总线150彼此通信。
多个核111和112可以以划分的方式执行任务。在这种情况下,多个核111和112可彼此独立地操作。为了多个核111和112一起执行一个任务,多个核111和112可根据预定规则彼此交换数据。例如,第一核111可将消息提供给第二核112以请求第二核112执行操作。在多个核111和112之间发送或接收数据可被称为进程间通信(IPC)。
多个核111和112中的每个可包括寄存器。例如,要通过IPC发送的数据或通过IPC接收的数据可被存储在多个核111和112中的每个的寄存器中。
多个核111和112可被配置为相同类型的核。也就是说,图1中的多核处理器100可具有对称多处理器(SMP)结构。例如,多个核111和112可以是高级RISC机器(ARM)核,并且多个核111和112中的每个可以以指令为单元来处理分派的任务。然而,本公开的示例实施例不限于此。例如,在一个示例实施例中,多个核111和112可被配置为不同类型的处理器。
共享存储器130可由多个核111和112共享,并且可支持多个核111和112之间的数据传输。例如,当第一核111将数据存储在共享存储器130中时,第二核112可从共享存储器130获得存储的数据,并且可处理获得的数据。
多个核111和112中的每个可通过消息队列方法将消息发送到另一个核。例如,可将包括来自共享存储器130的多个存储器区域的消息队列分配给第一核111,以将消息传送到第二核112。第一核111可将多个消息存储在多个存储器区域中。第二核112可通过按顺序访问多个存储器区域来获得多个消息,并且可处理消息。
多个存储器区域可具有不同范围内的地址。每次具有不同范围内的地址的多个存储器区域按顺序被访问时,第一核111和第二核112可执行地址转换操作。当这发生时,第一核111与第二核112之间的消息传送的计算开销会增大。计算负荷的这种增大可导致多核处理器100的性能的劣化。
在一个示例实施例中,多核处理器100可包括执行多个核111和112中的每个的地址转换操作的多个地址分配器121和122。当第一核111重复执行针对多个存储器区域之中的参考存储器区域的访问指令时,第一地址分配器121可执行地址转换操作,使得多个存储器区域按顺序被访问。例如,第一地址分配器121可通过将根据参考存储器区域的访问计数确定的偏移应用于参考存储器区域的地址来执行地址转换,使得第一地址分配器121可控制第一核111访问由地址指示的存储器区域。
在一个示例实施例中,多个核111和112可通过重复执行用于访问相同存储器区域的指令来按顺序访问多个存储器区域。因此,可减小每次按顺序访问用于多个核111和112的多个存储器区域时执行地址转换操作的负担。例如,可减少用于在多个核111和112中的每个中执行地址转换操作的指令周期。因此,多核处理器100的性能可提高。
图2和图3是示出根据示例实施例的多核处理器的进程间通信(IPC)操作的框图。
图2示出参照图1描述的包括在多核处理器100中的第一核111和第二核112、第一地址分配器121和第二地址分配器122以及共享存储器130。图2示出根据第一核111将消息发送到第二核112的示例的多核处理器100的IPC操作。
共享存储器130可包括消息队列131。消息队列131可包括多个存储器区域MR1至MR8。例如,当多核处理器100被初始化时,来自共享存储器130的具有预定地址范围的存储器区域MR1至MR8可在第一核111中被分配为消息队列131。
多个存储器区域MR1至MR8中的每个可具有不同范围内的地址。例如,多个存储器区域MR1至MR8可具有连续范围的地址。多个存储器区域MR1至MR8可具有相同的大小。
第一核111可将要传送到第二核112的多个消息提供给消息队列131。例如,第一核111可执行用于将存储在内部寄存器中的消息存储在消息队列131中的存储指令。第一核111将消息提供给消息队列131的操作可被称为推入操作(push operation)。
从第一核111推入的消息可按顺序被存储在消息队列131的存储器区域MR1至MR8中。也就是说,每次推入消息时,存储有消息的存储器区域的地址可不同。每次第一核111推入消息时,第一核111可改变用于执行存储指令的地址。当这发生时,第一核111的计算负荷会增大。例如,当用于推入消息的源代码被编译时,用于地址转换操作的指令可被添加到要在第一核111中实际执行的指令,因此,指令周期的数量可增加。
在一个示例实施例中,第一核111可重复将存储指令提供给参考存储器区域以推入消息,并且第一地址分配器121可根据存储指令被提供的次数执行地址转换操作,以允许消息按顺序被存储在多个存储器区域MR1至MR8中。
例如,参考存储器区域可被配置为第一存储器区域MR1,并且第一存储器区域MR1可被配置为多个存储器区域MR1至MR8之中的具有具备最小值的地址的存储器区域。第一地址分配器121可执行地址转换操作,使得每次用于参考存储器区域的存储指令被提供时,与参考存储器区域具有预定偏移的存储器区域可被访问。
第二核112可访问共享存储器130,并且可从消息队列131获得从第一核111传送的多个消息。例如,第二核112可执行用于将存储在消息队列131中的消息加载到内部寄存器中的加载指令。第二核112访问共享存储器130并从消息队列131获得消息的操作可被称为弹出操作(pop operation)。
存储在消息队列131的存储器区域MR1至MR8中的消息可按顺序被弹出到第二核112。也就是说,每次弹出消息时,存储有消息的存储器区域的地址可改变。每次消息弹出时,第二核112可改变用于执行加载指令的地址。当这发生时,第二核112的计算负荷会增大。
在一个示例实施例中,第二核112可重复将加载指令提供给参考存储器区域以弹出消息,并且第二地址分配器122可执行地址转换操作,使得消息可按顺序从多个存储器区域MR1至MR8被获得加载指令被提供的次数。类似于第一地址分配器121,第二地址分配器122可执行地址转换操作,使得每次为参考存储器区域提供加载指令时,与参考存储器区域具有根据加载指令被提供的次数确定的偏移的存储器区域可被访问。
在一个示例实施例中,当第一核111和第二核112发送和接收消息时,可减小用于提供存储指令的第一核111的计算负担和用于提供加载指令的第二核112的计算负担。例如,可减少用于地址转换操作的指令周期的数量。因此,多个核111和112之间的IPC性能可提高,因此,多核处理器100的数据处理性能可提高。
图2示出消息队列131被实现为线性队列的示例。然而,本公开的示例实施例不限于此。图3示出消息队列132被实现为循环队列的示例。然而,本公开的示例实施例不限于此。
图3中的消息队列132可包括多个存储器区域MR1至MR8。多个存储器区域MR1至MR8可具有连续范围的地址。图3中的阴影区域指示存储有消息的存储器区域。例如,消息可按顺序被推入,并且可被存储在第一存储器区域MR1至第三存储器区域MR3中。存储在第一存储器区域MR1至第三存储器区域MR3中的消息可按顺序被弹出。当存储在特定存储器区域中的消息被弹出时,消息可从存储器区域被移除。
当消息队列132是循环队列时,如图3中所示,消息可被存储在第八存储器区域MR8中,并且消息可再次按顺序从第一存储器区域MR1被存储。
在一个示例实施例中,当核111和112重复对参考存储器区域执行访问操作时,地址分配器121和122可基于参考存储器区域的访问计数来执行地址转换。因此,即使当核111和112每次访问多个存储器区域MR1至MR8时不执行地址转换操作时,核111和112也可按顺序访问多个存储器区域MR1至MR8。
当消息队列132是循环队列时,每次访问计数等于队列的深度(即,存储器区域的数量)时,地址分配器121和122可初始化访问计数。因此,核111和112可访问第八存储器区域MR8,并且可再次按顺序访问第一存储器区域MR1。
在下文中,将参照图4至图6更详细地描述根据示例实施例的地址分配器的结构和操作。
图4是示出根据示例实施例的地址分配器的结构的框图。
图4示出核110、地址分配器120和共享存储器130。核110可对应于参照图1描述的多个核111和112中的一个。地址分配器120可对应于参照图1描述的多个地址分配器121和122中的一个。共享存储器130可对应于参照图1描述的示例。
地址分配器120可包括入口接口电路201、大小寄存器202、计数器寄存器203和物理地址接口电路204。
入口接口电路201可接收与在核110中执行的访问指令对应的地址。由入口接口电路201从核110接收的地址可以是与参照图2描述的参考存储器区域对应的预定范围内的地址。例如,为了使核110推入一个消息,核110可按顺序执行针对预定范围内的地址的存储指令,并且入口接口电路201可按顺序接收地址。
大小寄存器202可存储包括在消息队列中的存储器区域的大小信息。计数器寄存器203可存储共享存储器130中的参考存储器区域的访问计数。
物理地址接口电路204可执行用于将从入口接口电路201接收的地址转换为核110实际正在访问的地址的地址转换操作。例如,物理地址接口电路204可基于存储在大小寄存器202中的大小信息和存储在计数器寄存器203中的访问计数,来转换从入口接口电路201接收的地址。
物理地址接口电路204可根据地址转换操作的结果,访问与共享存储器130中的参考存储器区域具有根据访问计数确定的偏移的存储器区域。
图5是示出根据示例实施例的地址分配器的操作的框图。
图5示出核110、入口接口电路201、大小寄存器202、计数器寄存器203和消息队列131。核110、入口接口电路201、大小寄存器202和计数器寄存器203可对应于参照图4描述的示例。消息队列131可对应于参照图2描述的示例。
如参照图2和图3所述,可在共享存储器130中分配具有用于在核之间传送消息的多个存储器区域MR1至MR8的消息队列131。图5示出存储器区域MR1至MR8中的每个的物理地址。存储器区域MR1至MR8中的每个可具有32字节(0x20)的大小。第一存储器区域MR1可具有八个连续地址0x20160000至0x2016001C。第二存储器区域MR2可具有与第一存储器区域MR1连续的八个地址0x20160020至0x2016003C。类似地,第三存储器区域MR3至第八存储器区域MR8可具有彼此连续的地址。
多个存储器区域MR1至MR8之中的具有具备最小值的地址的第一存储器区域MR1可以是参考存储器区域。核110可使用与第一存储器区域MR1对应的八个地址0x20160000至0x2016001C,按顺序顺序地访问多个存储器区域。
例如,当核110将消息存储在消息队列131中两次并且第三次存储消息时,消息可需要被存储在第三存储器区域MR3中。即使在第三次存储消息时,核110也可执行针对与作为参考存储器区域的第一存储器区域MR1对应的八个地址0x20160000至0x2016001C的存储指令。
入口接口电路201可从核110按顺序接收八个地址0x20160000至0x2016001C。大小寄存器202可存储作为存储器区域的大小的“0x20”,并且计数器寄存器203可存储作为参考存储器区域已经被访问的次数的“2”。
地址分配器120可将由入口接口电路201接收的地址转换为具有等于通过将存储器区域的大小乘以访问次数而获得的值的偏移的地址。例如,当从核110接收到地址“0x2016000C”时,地址分配器120可通过将经由将“0x20”乘以2而获得的“0x40”与“0x2016000C”相加,来将地址“0x2016000C”转换为地址“0x2016004C”。
当入口接口电路201按顺序接收与第一存储器区域MR1对应的八个地址0x20160000至0x2016001C时,可在消息队列131中访问对应于与八个地址中的每个具有偏移“0x40”的地址0x20160040至0x2016005C的第三存储器区域MR3。
图6是示出根据示例实施例的操作多核处理器的IPC操作的方法的流程图。
在操作S11中,地址分配器120可确定大小寄存器202中的存储器区域的大小信息,并且可初始化计数器寄存器203中的访问计数。
在操作S12中,核110可访问参考存储器区域。作为第一示例,为了将消息存储在共享存储器130中,核110可按顺序执行针对包括在参考存储器区域中的地址的存储指令。作为第二示例,核110可执行针对包括在参考存储器区域中的地址的加载指令,以从共享存储器130获得消息。
在操作S13中,地址分配器120可更新计数器寄存器203的访问计数。
在操作S14,核110可确定是否完成IPC。也就是说,核110可确定要传送到其他核的所有消息是否已经被传送,或者存储在共享存储器130的存储器区域中的所有消息是否已经被获得。
当确定完成IPC时(操作S14中的“是”),多核处理器100可终止IPC。
当IPC未完成时(操作S14中的“否”),多核处理器100可重复操作S12和操作S13。
例如,在操作S12中,核110可再次访问参考存储器区域。地址分配器120可执行地址转换,使得与参考存储器区域具有偏移的存储器区域可基于更新后的访问计数来访问。此后,可在操作S13中再次更新访问计数。
图7和图8是示出根据示例实施例的使用地址分配器在多个核之间交换消息的操作的框图。
图7示出多核处理器100。图7中的多核处理器100可包括与参照图1描述的多核处理器100的组件相同的组件,并且还可包括特殊功能寄存器140(SFR)。SFR 140可被配置为存储用于控制多个核111和112的操作的设置值的寄存器。在图7的示例中,SFR 140可由多个核111和112共享。然而,本公开的示例实施例不限于此。
图7示出第一核111通过地址分配器121和122将消息发送到第二核112的操作的流程。
在操作S21中,可将包括来自共享存储器130的多个存储器区域的消息队列分配给第一核111。例如,当初始化多核处理器100时,可(例如,响应于第一核111的请求)将消息队列分配给第一核111。第一核111可将包括在消息队列中的参考存储器区域的地址信息和存储器区域的大小信息存储在SFR 140中。
在操作S22中,第一核111可通过第一地址分配器121将多个消息顺序地存储在共享存储器130的多个存储器区域中。如图4至图6中所示,第一核111可重复访问参考存储器区域以按顺序存储多个消息。第一地址分配器121可执行地址转换,使得消息可被存储在与参考存储器区域具有根据访问计数和存储器区域的大小确定的偏移的存储器区域中。因此,多个消息可按顺序被存储在共享存储器130的多个存储器区域中。
在操作S23中,第一核111可将中断信号提供给第二核112,以通知消息被存储在共享存储器130中。
在操作S24中,第二核112可通过访问SFR 140,来获得分配给第一核111的消息队列的参考存储器区域的地址和存储器区域的大小信息。
在操作S25中,第二核112可通过第二地址分配器122,按顺序从共享存储器130的多个存储器区域获得多个消息。
如参照图4至图6所述,第二核112可重复访问参考存储器区域以按顺序获得多个消息。第二地址分配器122可执行地址转换,以从与参考存储器区域具有根据访问计数和存储器区域的大小确定的偏移的存储器区域加载消息。因此,可从共享存储器130的多个存储器区域按顺序获得多个消息。
图8示出如参照图7描述的多核处理器100。参照图8,可将多个消息队列133(例如,消息队列1)和134(例如,消息队列2)分配给第一核111和第二核112。第一消息队列133可以是用于将消息从第一核111传送到第二核112的消息队列,并且第二消息队列134可以是用于将消息从第二核112传送到第一核111的消息队列。多个消息队列133和134中的每个可包括具有不同地址的参考存储器区域。
操作S31和操作S32可表示第一核111将消息传送到第二核112的操作的流程。在操作S31中,第一核111可使用第一地址分配器121将多个消息按顺序存储在第一消息队列133中。在操作S32中,第二核112可使用第二地址分配器122从第一消息队列133按顺序获得多个消息。
在一个示例实施例中,当第一核111和第二核112重复访问第一消息队列133的参考存储器区域时,第一地址分配器121和第二地址分配器122可执行地址转换操作,使得第一核111和第二核112可按顺序访问第一消息队列133的存储器区域。
操作S33和操作S34表示第二核112将消息传送到第一核111的操作的流程。在操作S33中,第二核112可使用第二地址分配器122将多个消息顺序地存储在第二消息队列134中。在操作S34中,第一核111可使用第一地址分配器121从第二消息队列134顺序地获得多个消息。
在一个示例实施例中,当第一核111和第二核112重复访问第二消息队列134的参考存储器区域时,第一地址分配器121和第二地址分配器122可执行地址转换操作,使得第一核111和第二核112可按顺序访问第二消息队列134的存储器区域。
在一个示例实施例中,可减小用于由第一核111和第二核112顺序地访问共享存储器130的多个存储器区域的地址转换操作的负担。因此,多核处理器100的IPC性能可提高。
在下文中,将参照图9至图11描述可应用示例实施例的系统的示例。
图9是示出根据示例实施例的主机存储系统的框图。
主机-存储系统30可包括主机300和存储装置400。存储装置400可包括存储控制器(STRG CTRL)410和非易失性存储器(NVM)420。
主机300可包括电子装置(诸如,例如,诸如移动电话、MP3播放器、膝上型计算机等的便携式电子装置或者诸如台式计算机、游戏机、电视(TV)、投影仪等的电子装置)。主机300可包括至少一个操作系统(OS)。操作系统可管理和控制主机300的整体功能和操作。
存储装置400可包括用于根据来自主机300的请求存储数据的存储介质。作为一个示例,存储装置400可包括固态驱动器(SSD)、嵌入式存储器和可移除外部存储器中的至少一个。当存储装置400被实现为SSD时,存储装置400可被实现为符合非易失性存储器快速(NVMe)标准的装置。当存储装置400被实现为嵌入式存储器或外部存储器时,存储装置400可被实现为符合通用闪存(UFS)或嵌入式多媒体卡(eMMC)标准的装置。主机300和存储装置400可根据各自采用的标准协议生成和发送包。
即使不供电,非易失性存储器420也可保持存储的数据。非易失性存储器420可通过编程操作存储从主机300提供的数据,并且可通过读取操作输出存储在非易失性存储器420中的数据。
当非易失性存储器420包括闪存时,闪存可包括2D NAND存储器阵列或3D(或垂直)NAND(VNAND)存储器阵列。作为另一示例,存储装置400可包括其他类型的非易失性存储器。例如,存储装置400可包括磁性RAM(MRAM)、自旋转移矩MRAM(SST-MRAM)、导电桥接RAM(CBRAM)、铁电RAM(FeRAM)、相位RAM(PRAM)、电阻式RAM以及各种其他类型的存储器。
存储控制器410可响应于来自主机300的请求而控制非易失性存储器420。例如,存储控制器410可将从非易失性存储器420读取的数据提供给主机300,并且可将从主机300提供的数据存储在非易失性存储器420中。对于该操作,存储控制器410可支持非易失性存储器420的操作(诸如,例如,读取操作、编程操作和擦除操作)。
存储控制器410可包括主机接口411、存储器接口412和中央处理器(CPU)413。存储控制器410还可包括包管理器415、缓冲存储器416、纠错码(ECC)引擎417和高级加密标准(AES)引擎418。存储控制器410还可包括加载有由CPU 413执行的固件的工作存储器,并且当CPU 413执行固件时,非易失性存储器420的数据写入和读取操作可被控制。
主机接口411可将包发送到主机300并从主机300接收包。从主机300发送到主机接口411的包可包括例如要写入非易失性存储器420的命令或数据,并且从主机接口411发送到主机300的包可包括例如对从非易失性存储器420读取的命令或数据的响应。
存储器接口412可将要写入非易失性存储器420的数据发送到非易失性存储器420,或者可接收从非易失性存储器420读取的数据。存储器接口412可被实现为符合诸如切换或开放NAND闪存接口(ONFI)的标准协议。
包管理器415可根据与主机300协商的接口的协议来生成包,或者可解析来自从主机300接收的包的各种类型的信息。缓冲存储器416可临时存储要写入非易失性存储器420或从非易失性存储器420读取的数据。缓冲存储器416可被设置在存储控制器410中。然而,示例实施例不限于此。例如,根据示例实施例,缓冲存储器416可被设置在存储控制器410外部。
ECC引擎417可对从非易失性存储器420读取的读出数据执行错误检测和纠正功能。例如,ECC引擎417可生成用于要写入到非易失性存储器420中的写入数据的奇偶校验位,并且生成的奇偶校验位可与写入数据一起被存储在非易失性存储器420中。当数据从非易失性存储器420被读取时,ECC引擎417可使用与读取的数据一起从非易失性存储器420读取的奇偶校验位来纠正读取的数据中的错误,并且可输出纠错后的读取的数据。
AES引擎418可使用对称密钥算法对输入到存储控制器410的数据执行加密操作和解密操作中的至少一个。
CPU 413可被实现为包括多个核的多核处理器。存储控制器410可具有多个软件分层结构(诸如,例如,主机接口层(HIL)、闪存转换层(FTL)和闪存接口层(FIL))。多个核中的每个可以以划分的方式执行HIL操作、FTL操作和FIL操作。可通过在多个核之间交换消息来执行层间通信。在下文中,将根据示例实施例更详细地描述用于在存储控制器中的软件层之间执行通信的方法。
图10是示出根据示例实施例的包括在存储控制器中的CPU的结构的框图。
参照图10,CPU 413可包括多个核431、432和433,多个地址分配器441(例如,地址分配器1)、442(例如,地址分配器2)和443(例如,地址分配器3)、共享存储器450以及SFR460。
多个核431、432和433可包括用于驱动HIL的HIL核431、用于驱动FTL的FTL核432和用于驱动FIL的FIL核433。
多个核431、432和433可以以划分的方式执行用于处理一个访问命令的不同任务。例如,HIL核431可控制主机接口411并且可处理来自主机300的访问命令。FTL核432可执行从主机300提供的逻辑地址与非易失性存储器420的物理地址之间的地址映射。FIL核433可管理非易失性存储器420的读取操作和写入操作。
当多个核431、432和433以划分的方式执行用于处理一个输入/输出命令的任务时,CPU 413可执行IPC。也就是说,可在多个核431、432和433之间交换一个或多个消息。
共享存储器450可具有由多个核431、432和433共享的消息队列,并且可支持多个核431、432和433之间的消息传送。在图10的示例中,共享存储器450可包括第一消息队列451(例如,消息队列1)和第二消息队列452(例如,消息队列2)。
例如,当HIL核431将多个消息按顺序存储在包括在消息队列中的多个存储器区域中时,FTL核432可按顺序访问多个存储器区域并且可获得多个消息。
每次多个存储器区域按顺序被访问时,多个核431、432和433可执行地址转换操作。当这发生时,CPU 413的IPC性能会降低。提高CPU 413的IPC性能可提高存储装置400的访问性能。
在一个示例实施例中,多个地址分配器441、442和443可执行地址转换操作,使得多个核431、432和433可快速地发送和接收消息。当多个核431、432和433对包括在消息队列中的多个存储器区域之中的参考存储器区域的预定地址重复执行访问操作时,多个地址分配器441、442和443可通过执行地址转换操作来支持多个核431、432和433按顺序访问包括在消息队列中的多个存储器区域。例如,多个地址分配器441、442和443中的每个可执行地址转换操作,使得与参考存储器区域具有预定偏移的存储器区域可基于针对每个消息队列的参考存储器区域的访问计数来访问。
SFR 460可存储用于控制多个核431、432和433的操作的设置值。例如,SFR 460可存储第一消息队列451和第二消息队列452中的每个的参考存储器区域的地址信息以及存储器区域的大小信息。在示例实施例中,SFR 460可由多个核431、432和433共享,并且多个核431、432和433可通过访问SFR 460来共享关于消息队列的信息。
在一个示例实施例中,由于CPU 413的IPC性能可提高,因此存储装置400的数据处理性能也可提高。
例如,当主机接口411从主机300接收到访问命令和逻辑地址时,HIL核431可生成请求将逻辑地址转换为物理地址的多个第一消息,并且可对多个第一消息重复执行针对第一消息队列451的参考存储器区域的存储指令。第一地址分配器441可执行地址转换操作,使得多个第一消息可基于HIL核431关于第一消息队列451的参考存储器区域的访问计数而按顺序被存储在包括在第一消息队列451中的多个存储器区域中。
FTL核432可重复执行针对第一消息队列451的参考存储器区域的加载指令。第二地址分配器442可执行地址转换操作,使得多个第一消息可基于FTL核432关于第一消息队列451的参考存储器区域的访问计数而按顺序从第一消息队列451的多个存储器区域被输出。
FTL核432可响应于输出的多个第一消息而将逻辑地址转换为物理地址,并且可生成请求用于允许非易失性存储器420访问物理地址的内部命令的多个第二消息。FTL核432可对多个第二消息重复执行针对第二消息队列452的参考存储器区域的存储指令。第二地址分配器442可执行地址转换操作,使得多个第二消息可基于FTL核432关于第二消息队列452的参考存储器区域的访问计数而被存储在第二消息队列452的多个存储器区域中。
FIL核433可重复执行针对第二消息队列452的参考存储器区域的加载指令。第三地址分配器443可执行地址转换操作,使得多个第二消息可基于FIL核433关于第二消息队列452的参考存储器区域的访问计数而从第二消息队列452的多个存储器区域被输出。FIL核433可响应于输出的多个第二消息而生成用于允许非易失性存储器420访问物理地址的内部命令,并且可将内部命令提供给非易失性存储器420。
在一个示例实施例中,由于CPU 413的IPC性能可提高,因此多个核431、432和433可快速地执行用于处理来自主机300的命令的任务。因此,存储装置400的数据处理性能可提高。
图11是示出根据示例实施例的应用了存储装置的系统的示图。
图11中的系统1000可被实现为移动系统(诸如,例如,移动电话、智能电话、平板个人计算机、可穿戴装置、医疗保健装置或物联网(IOT)装置)。然而,图11中的系统1000不一定限于移动系统,并且可被实现为其他装置(诸如,例如,个人计算机、膝上型计算机、服务器、媒体播放器或汽车装置(诸如,导航))。
参照图11,系统1000可包括主处理器1100、存储器1200a和1200b以及存储装置1300a和1300b,并且还可包括图像捕获装置1410、用户输入装置1420、传感器1430、通信装置1440、显示器1450、扬声器1460、电源装置1470和连接接口1480中的至少一个。
主处理器1100可控制系统1000的整体操作(包括例如包括在系统1000中的其他组件的操作)。主处理器1100可实现为例如通用处理器、专用处理器或应用处理器。
主处理器1100可包括一个或多个CPU核1110,并且还可包括用于控制存储器1200a和1200b和/或存储装置1300a和1300b的控制器1120。在示例实施例中,主处理器1100还可包括加速器1130,加速器1130是用于高速数据操作(诸如,人工智能(AI)数据操作)的专用电路。这样的加速器1130可包括例如图形处理器(GPU)、神经处理器(NPU)和/或数据处理器(DPU),并且可被实现为独立于主处理器1100的其他组件的芯片。
在示例实施例中,主处理器1100可被实现为包括多个CPU核和由多个CPU核共享的共享存储器的多核处理器。多个CPU核可使用分配给多个CPU核的消息队列来发送和接收消息。
在一个示例实施例中,主处理器1100还可包括与多个CPU核对应的多个地址分配器。当CPU核重复访问消息队列的参考存储器区域时,与CPU核对应的地址分配器可基于访问次数来按顺序访问多个存储器区域。由于当CPU核将多个消息存储在消息队列中时可不执行地址转换操作,因此CPU核之间的消息传输速度可提高。
存储器1200a和1200b可用作系统1000的主存储器装置,并且可包括易失性存储器(诸如,例如,SRAM和/或DRAM),或可包括非易失性存储器(诸如,例如,闪存、PRAM和/或RRAM)。存储器1200a和1200b可与主处理器1100被实现在同一封装件中。
存储装置1300a和1300b可用作不管是否供电都存储数据的非易失性存储装置,并且与存储器1200a和1200b相比可具有相对大的存储容量。存储装置1300a和1300b可包括存储控制器1310a和1310b以及用于在存储控制器1310a和1310b的控制下存储数据的非易失性存储器(NVM)1320a和1320b。非易失性存储器1320a和1320b可包括具有2维(2D)结构或3维(3D)垂直NAND(V-NAND)结构的闪存,或者可包括其他类型的存储器(诸如,PRAM和/或RRAM)。
存储装置1300a和1300b可在与主处理器1100物理分离的状态下被包括在系统1000中,或者可与主处理器1100被实现在同一封装件中。由于存储装置1300a和1300b与固态驱动器(SSD)或存储器卡具有相同的形式,使得存储装置1300a和1300b可通过接口结合以附接到系统1000的其他组件和从系统1000的其他组件拆卸。标准协议(诸如,例如,通用闪存(UFS)、嵌入式多媒体卡(eMMC)或非易失性存储器快速(NVMe))可应用于存储装置1300a和1300b,但是本公开的示例实施例不限于此。
在一个示例实施例中,存储装置1300a、1300b可包括多核处理器。多核处理器可包括多个核、包含用于在多个核之间传送消息的多个存储器区域的共享存储器以及多个地址分配器。多个地址分配器可被配置为:当多个核中的对应核重复访问多个存储器区域之中的参考存储器区域时,根据访问次数执行地址转换,并且控制对应核按顺序访问存储器区域。在一个示例实施例中,多核处理器的IPC性能可提高,并且因此,存储装置1300a和1300b的数据处理性能可提高。
图像捕获装置1410可获得静止图像或视频,并且可被实现为例如相机、摄像机和/或网络摄像头。
用户输入装置1420可接收从系统1000的用户输入的各种类型的数据,并且可被实现为例如触摸板、小键盘、键盘、鼠标和/或麦克风。
传感器1430可检测从系统1000的外部实体获得的各种类型的物理量,并且可将感测到的物理量转换为电信号。传感器1430可被实现为例如温度传感器、压力传感器、照度传感器、位置传感器、加速度传感器、生物传感器和/或陀螺仪传感器。
通信装置1440可根据各种通信协议在系统1000外部的其他装置之间发送和接收信号。通信装置1440可包括例如天线、收发机和/或调制解调器(MODEM)。
显示器1450和扬声器1460可用作用于分别将视觉信息和听觉信息输出到系统1000的用户的输出装置。
电源装置1470可适当地转换从嵌入在系统1000中的电池和/或外部电源供应的电力,并且可将电力供应到系统1000的每个组件。
连接接口1480可提供系统1000与连接到系统1000的外部装置之间的连接,并与系统1000交换数据。连接接口1480可被实现为各种接口方法(诸如,例如,高级技术附件(ATA)、串行ATA(SATA)、外部SATA(e-SATA)、小型计算机小型接口(SCSI)、串行附接SCSI(SAS)、外围组件互连(PCI)、PCIe(PCI快速)、NVMe、IEEE 1394、通用串行总线(USB)、安全数字(SD)卡、多媒体卡(MMC)、eMMC、UFS、嵌入式通用闪存(eUFS)或紧凑型闪存(CF)卡接口)。
根据示例实施例,可提供一种多核处理器和包括多核处理器的存储装置。
在多核处理器中,每次核访问共享存储器时执行的地址转换操作可代替地由与核分开设置的地址分配器来执行。因此,核上的计算负担可减小,并且核可快速地访问共享存储器。
由于核之间的IPC可被快速地执行,因此多核处理器的性能可提高,并且因此,包括多核处理器的存储装置的数据处理速度可提高。
如在本公开的领域中传统的那样,在附图中按照功能块、单元和/或模块方面描述和示出示例实施例。本领域技术人员将理解,这些块、单元和/或模块由可使用基于半导体的制造技术或其他制造技术来形成的电子(或光学)电路(诸如,逻辑电路、分立组件、微处理器、硬连线电路、存储器元件、布线连接等)物理地实现。在块、单元和/或模块由微处理器或类似物实现的情况下,它们可使用软件(例如,微代码)来编程以执行在此讨论的各种功能,并且可选地可由固件和/或软件驱动。可选地,每个块、单元和/或模块可由专用硬件实现,或者实现为用于执行一些功能的专用硬件和用于执行其他功能的处理器(例如,一个或多个编程的微处理器和相关联的电路)的组合。
在本公开的示例实施例中,提供三维(3D)存储器阵列。3D存储器阵列一体地形成在存储器单元的阵列的一个或多个物理层级中,存储器单元的阵列具有设置在硅基底上方的有源区域和与那些存储器单元的操作相关联的电路,无论这样的相关联的电路是在这样的基底上方还是在这样的基底内。术语“一体”意味着阵列的每个层级的层直接沉积在阵列的每个下层级的层上。在本公开的示例实施例中,3D存储器阵列包括垂直定向使得至少一个存储器单元位于另一个存储器单元上方的垂直NAND串。至少一个存储器单元可包括电荷捕获层。通过引用包含于此的以下专利文献描述其中三维存储器阵列被构造为多个层级并且字线和/或位线在层级之间共享的三维存储器阵列的合适构造:第7,679,133号美国专利、第8,553,466号美国专利、第8,654,587号美国专利、第8,559,235号美国专利;和公开号2011/0233648的美国专利。
虽然已经参照本公开的示例实施例具体示出和描述了本公开,但是本领域普通技术人员将理解,在不脱离如由所附权利要求限定的本公开的精神和范围的情况下,可在其中进行形式和细节上的各种改变。
Claims (20)
1.一种多核处理器,包括:
多个核;
共享存储器,具有消息队列,消息队列包括在所述多个核之间传输消息的多个存储器区域;
多个地址分配器,被配置为:每次与所述多个存储器区域之中的参考存储器区域对应的预定范围内的地址从所述多个核之中的对应核被接收到时,通过将根据参考存储器区域的访问计数确定的偏移应用于所述预定范围内的所述地址来控制所述多个存储器区域按顺序被访问;以及
总线,被配置为:将所述多个核、共享存储器和所述多个地址分配器彼此连接。
2.根据权利要求1所述的多核处理器,其中,所述多个存储器区域具有相同的大小并且具有连续范围的地址。
3.根据权利要求2所述的多核处理器,其中,参考存储器区域在所述多个存储器区域之中具有具备最小值的地址。
4.根据权利要求2所述的多核处理器,其中,所述多个地址分配器中的每个包括:
入口接口电路,被配置为:从所述对应核接收所述预定范围内的所述地址;
大小寄存器,被配置为:存储所述多个存储器区域中的一个的大小信息;
计数器寄存器,被配置为:存储访问计数;以及
物理地址接口电路,被配置为:基于大小信息和访问计数确定所述偏移,通过将所述偏移应用于所述预定范围内的所述地址中的每个来执行地址转换,并且访问所述多个存储器区域之中的由转换后的地址指示的存储器区域。
5.根据权利要求4所述的多核处理器,其中,物理地址接口电路被配置为:通过将经由将大小信息乘以访问计数而获得的值与所述预定范围内的所述地址中的每个相加来执行地址转换。
6.根据权利要求1至5中的任一项所述的多核处理器,还包括:
特殊功能寄存器,被配置为:存储消息队列的所述预定范围内的所述地址和所述多个存储器区域中的一个的大小信息,
其中,特殊功能寄存器由所述多个核共享。
7.根据权利要求1至5中的任一项所述的多核处理器,
其中,消息队列被配置为循环队列,并且
其中,所述多个地址分配器中的每个被配置为:每次所述预定范围内的所述地址被接收到时,更新访问计数,并且所述多个地址分配器中的每个被配置为:每次更新后的访问计数等于循环队列的深度时,初始化访问计数。
8.一种多核处理器,包括:
第一核和第二核,被配置为:执行进程间通信;
共享存储器,由第一核和第二核共享;以及
第一地址分配器,被配置为:执行第一地址转换操作,
其中,第一核被配置为:基于第一地址转换操作来访问共享存储器,
其中,第一核被配置为:请求包括来自共享存储器的多个存储器区域的第一消息队列,并且当第一消息队列被分配给第一核时,第一核对第一多个消息重复执行针对所述多个存储器区域之中的第一参考存储器区域的存储指令,并且
其中,第一地址分配器被配置为:执行第一地址转换操作,使得所述第一多个消息能够基于第一核关于第一参考存储器区域的访问计数而按顺序被存储在所述多个存储器区域中。
9.根据权利要求8所述的多核处理器,还包括:
第二地址分配器,被配置为:执行第二地址转换操作,
其中,第二核被配置为:基于第二地址转换操作来访问共享存储器,
其中,第二核被配置为:重复执行针对第一参考存储器区域的加载指令,并且
其中,第二地址分配器被配置为:执行第二地址转换操作,使得所述第一多个消息能够基于第二核关于第一参考存储器区域的访问计数而按顺序从所述多个存储器区域被获得。
10.根据权利要求9所述的多核处理器,还包括:
特殊功能寄存器,被配置为:存储第一参考存储器区域的地址信息,
其中,特殊功能寄存器由第一核和第二核共享。
11.根据权利要求10所述的多核处理器,其中,第二核被配置为:响应于来自第一核的中断信号,使用从特殊功能寄存器获得的地址信息来重复执行针对第一参考存储器区域的加载指令。
12.根据权利要求9所述的多核处理器,其中,第二核被配置为:请求来自共享存储器的第二消息队列,并且当具有与第一消息队列的地址不同的地址的第二消息队列被分配给第二核时,第二核对第二多个消息重复执行针对第二消息队列的第二参考存储器区域的存储指令。
13.根据权利要求8至12中的任一项所述的多核处理器,其中,第一地址分配器被配置为:从第一核接收与第一参考存储器区域对应的预定范围内的地址,并且通过将根据访问计数确定的偏移应用于所述预定范围内的所述地址来执行第一地址转换操作。
14.根据权利要求13所述的多核处理器,其中,第一地址分配器还被配置为:将通过将访问计数乘以所述多个存储器区域中的一个的大小而获得的值确定为所述偏移。
15.根据权利要求8至12中的任一项所述的多核处理器,其中,第一核被配置为:在所述多核处理器的初始化操作期间,请求来自共享存储器的第一消息队列。
16.一种存储装置,包括:
存储器装置,被配置为:存储数据;以及
存储控制器,被配置为:控制存储器装置,
其中,存储控制器包括:
多个核,
共享存储器,具有在所述多个核之间传送消息的多个消息队列,以及
多个地址分配器,被配置为:执行地址转换操作,使得所述多个核能够访问共享存储器,并且
其中,所述多个地址分配器中的一个被配置为:当所述多个消息队列中的一个消息队列的参考存储器区域的地址从所述多个核之中的对应核被接收到时,执行地址转换操作,使得所述一个消息队列的多个存储器区域基于参考存储器区域的访问计数来访问。
17.根据权利要求16所述的存储装置,其中,所述多个核包括:
主机接口层核,被配置为:驱动主机接口层;
闪存转换层核,被配置为:驱动闪存转换层;以及
闪存接口层核,被配置为:驱动闪存接口层。
18.根据权利要求17所述的存储装置,
其中,响应于与来自主机的逻辑地址一起接收的访问指令,主机接口层核被配置为:生成请求将逻辑地址转换为存储器装置的物理地址的多个第一消息,并且对所述多个第一消息重复执行针对与所述多个消息队列之中的第一消息队列对应的参考存储器区域的存储指令,并且
其中,所述多个地址分配器之中的第一地址分配器被配置为:执行地址转换操作之中的第一地址转换操作,使得所述多个第一消息能够基于主机接口层核关于第一消息队列的参考存储器区域的访问计数而按顺序被存储在第一消息队列的多个存储器区域中。
19.根据权利要求18所述的存储装置,
其中,闪存转换层核被配置为:重复执行针对第一消息队列的参考存储器区域的加载指令,
其中,所述多个地址分配器之中的第二地址分配器被配置为:执行地址转换操作之中的第二地址转换操作,使得所述多个第一消息能够基于闪存转换层核关于第一消息队列的参考存储器区域的访问计数而按顺序从第一消息队列的所述多个存储器区域被输出,
其中,闪存转换层核被配置为:响应于所述多个第一消息而将逻辑地址转换为物理地址,生成请求生成用于访问存储器装置中的物理地址的内部指令的多个第二消息,并且对所述多个第二消息重复执行针对所述多个消息队列之中的第二消息队列的参考存储器区域的存储指令,并且
其中,第二地址分配器被配置为:执行地址转换操作之中的第三地址转换操作,使得所述多个第二消息能够基于闪存转换层核关于第二消息队列的参考存储器区域的访问计数而按顺序被存储在第二消息队列的多个存储器区域中。
20.根据权利要求16至19中的任一项所述的存储装置,其中,共享存储器被配置为:响应于来自所述多个核的请求而在所述存储装置的初始化操作期间分配所述多个消息队列。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020210181443A KR20230092227A (ko) | 2021-12-17 | 2021-12-17 | 멀티코어 프로세서 및 스토리지 장치 |
| KR10-2021-0181443 | 2021-12-17 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN116266146A true CN116266146A (zh) | 2023-06-20 |
Family
ID=84785007
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202211629266.3A Pending CN116266146A (zh) | 2021-12-17 | 2022-12-13 | 多核处理器和存储装置 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US12019581B2 (zh) |
| EP (1) | EP4198746A3 (zh) |
| KR (1) | KR20230092227A (zh) |
| CN (1) | CN116266146A (zh) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US12259793B2 (en) * | 2023-03-29 | 2025-03-25 | Dell Products L.P. | Allocating system RDP metadata space with IO performance priority |
| CN120162177B (zh) * | 2025-05-19 | 2025-09-09 | 长沙金维集成电路股份有限公司 | 一种多处理器核通信方法、装置、电子设备及存储介质 |
Family Cites Families (22)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2002063069A (ja) | 2000-08-21 | 2002-02-28 | Hitachi Ltd | メモリ制御装置、データ処理システム及び半導体装置 |
| JP2003044355A (ja) | 2001-07-27 | 2003-02-14 | Sharp Corp | メモリシステム、メモリ装置、及び読み出し装置 |
| US7069398B2 (en) * | 2003-06-20 | 2006-06-27 | Industrial Technology Research Institute | Apparatus and method for de-interleaving the interleaved data in a coded orthogonal frequency division multiplexing receiver |
| US7093037B2 (en) | 2003-09-22 | 2006-08-15 | Emulex Design & Manufacturing Corporation | Generalized queue and specialized register configuration for coordinating communications between tightly coupled processors |
| JP4973154B2 (ja) | 2006-11-29 | 2012-07-11 | ヤマハ株式会社 | 演算処理装置、メモリアクセス方法、及びプログラム |
| KR101226685B1 (ko) | 2007-11-08 | 2013-01-25 | 삼성전자주식회사 | 수직형 반도체 소자 및 그 제조 방법. |
| US7908455B2 (en) | 2008-02-27 | 2011-03-15 | Microchip Technology Incorporated | Low overhead memory management system and method |
| CN102077181B (zh) | 2008-04-28 | 2014-07-02 | 惠普开发有限公司 | 用于在多核处理器中和在某些共享存储器多处理器系统中产生并输送处理器间中断的方法和系统 |
| KR101691092B1 (ko) | 2010-08-26 | 2016-12-30 | 삼성전자주식회사 | 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템 |
| US8553466B2 (en) | 2010-03-04 | 2013-10-08 | Samsung Electronics Co., Ltd. | Non-volatile memory device, erasing method thereof, and memory system including the same |
| US9536970B2 (en) | 2010-03-26 | 2017-01-03 | Samsung Electronics Co., Ltd. | Three-dimensional semiconductor memory devices and methods of fabricating the same |
| KR101682666B1 (ko) | 2010-08-11 | 2016-12-07 | 삼성전자주식회사 | 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템 |
| US9098462B1 (en) * | 2010-09-14 | 2015-08-04 | The Boeing Company | Communications via shared memory |
| WO2012060148A1 (ja) | 2010-11-02 | 2012-05-10 | インターナショナル・ビジネス・マシーンズ・コーポレーション | メモリ・アクセスを制御する装置およびコンピュータ |
| US8880811B2 (en) * | 2011-06-27 | 2014-11-04 | Intel Mobile Communications GmbH | Data processing device and data processing arrangement for accelerating buffer synchronization |
| US9910787B2 (en) | 2014-06-05 | 2018-03-06 | Micron Technology, Inc. | Virtual address table |
| US10210095B2 (en) * | 2017-07-06 | 2019-02-19 | International Business Machines Corporation | Configurable hardware queue management and address translation |
| US10635602B2 (en) | 2017-11-14 | 2020-04-28 | International Business Machines Corporation | Address translation prior to receiving a storage reference using the address to be translated |
| US10402937B2 (en) * | 2017-12-28 | 2019-09-03 | Nvidia Corporation | Multi-GPU frame rendering |
| JP7131053B2 (ja) | 2018-04-24 | 2022-09-06 | 富士通株式会社 | 記憶装置,情報処理プログラムおよび情報処理システム |
| US10740163B2 (en) | 2018-06-28 | 2020-08-11 | Advanced Micro Devices, Inc. | Network packet templating for GPU-initiated communication |
| CN111143235A (zh) * | 2018-11-06 | 2020-05-12 | 爱思开海力士有限公司 | 多内核存储器系统中的逻辑地址分配 |
-
2021
- 2021-12-17 KR KR1020210181443A patent/KR20230092227A/ko active Pending
-
2022
- 2022-09-30 US US17/936,995 patent/US12019581B2/en active Active
- 2022-12-12 EP EP22212830.8A patent/EP4198746A3/en active Pending
- 2022-12-13 CN CN202211629266.3A patent/CN116266146A/zh active Pending
Also Published As
| Publication number | Publication date |
|---|---|
| EP4198746A3 (en) | 2023-07-26 |
| US20230195688A1 (en) | 2023-06-22 |
| US12019581B2 (en) | 2024-06-25 |
| EP4198746A2 (en) | 2023-06-21 |
| KR20230092227A (ko) | 2023-06-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11914531B2 (en) | Host controller interface using multiple circular queue, and operating method thereof | |
| CN115495389B (zh) | 存储控制器、计算存储装置以及计算存储装置的操作方法 | |
| KR102367982B1 (ko) | 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 | |
| US12360665B2 (en) | Storage device for executing processing code and operating method of the storage device | |
| CN112820337B (zh) | 存储器控制器、存储器系统和存储器系统的操作方法 | |
| CN116049915A (zh) | 基于空间证明的区块链网络的存储装置和包括其的系统 | |
| US11907120B2 (en) | Computing device for transceiving information via plurality of buses, and operating method of the computing device | |
| CN112286444B (zh) | 控制器以及包括控制器的存储器系统 | |
| KR20210148852A (ko) | 다중 원형 큐를 이용하는 호스트 컨트롤러 인터페이스 및 이의 동작 방법 | |
| TWI797022B (zh) | 儲存控制器、計算儲存裝置以及計算儲存裝置的操作方法 | |
| KR20220117747A (ko) | 데이터 프리페치 제어 기능을 갖는 스토리지 컨트롤러, 스토리지 컨트롤러의 동작 방법, 및 스토리지 장치의 동작 방법 | |
| EP4198746A2 (en) | Multi-core processor and storage device | |
| CN115862699A (zh) | 存储控制器和包括该存储控制器的存储系统 | |
| EP4386556A1 (en) | Operation method of memory controller configured to control memory device | |
| US11868270B2 (en) | Storage system and storage device, and operating method thereof | |
| EP4398084B1 (en) | Storage device and operating method thereof | |
| US12530286B2 (en) | Memory controller, operating method thereof, and storage device for ensuring initialization of security parameter | |
| US20240193041A1 (en) | Operation method of memory controller configured to control memory device | |
| US12332830B2 (en) | Storage controller and storage device for PCIe communication optimization | |
| US20250173260A1 (en) | Memory controller, storage device including memory controller, and operating method of memory controller | |
| CN116504289A (zh) | 存储器件 | |
| CN118363521A (zh) | 包括非易失性存储器件和控制器的存储设备 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination |