CN103907108B - 共享闪存的方法、控制器及系统 - Google Patents

共享闪存的方法、控制器及系统 Download PDF

Info

Publication number
CN103907108B
CN103907108B CN201280002250.8A CN201280002250A CN103907108B CN 103907108 B CN103907108 B CN 103907108B CN 201280002250 A CN201280002250 A CN 201280002250A CN 103907108 B CN103907108 B CN 103907108B
Authority
CN
China
Prior art keywords
processor
flash
caching
controller
initialization directive
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.)
Active
Application number
CN201280002250.8A
Other languages
English (en)
Other versions
CN103907108A (zh
Inventor
俞柏峰
王富
张迪煊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN103907108A publication Critical patent/CN103907108A/zh
Application granted granted Critical
Publication of CN103907108B publication Critical patent/CN103907108B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Stored Programmes (AREA)

Abstract

共享闪存的方法、控制器及系统,该方法应用在包含至少两个处理器的系统中,所述系统还包含控制器以及至少一个FLASH,所述FLASH的数量少于所述处理器的数量,所述控制器包含为每个所述处理器分配的缓存,该方法包括:控制器从FLASH中为每个处理器读取初始化指令;将读取到的所述初始化指令写入为每个处理器分配的缓存中,以使所述每个处理器从为其分配的缓存中读取所述初始化指令。本发明实施例通过在系统中设置少于处理器数量的FLASH,从而节省了系统空间;并且由于本发明实施例通过系统中已有的控制器上的缓存资源,代替现有技术中与处理器数量一致的FLASH完成对所有处理器的初始化操作,从而降低了整个系统的功耗。

Description

共享闪存的方法、控制器及系统
技术领域
本发明涉及计算机技术领域,特别涉及共享闪存(FLASH)的方法、控制器及系统。
背景技术
随着信息化技术的发展,对数据中心的需求量逐步增大,数据中心的重要组成部分是服务器。由于ARM服务器具有能耗低,成本低的特点,因此数据中心中的服务器可以采用ARM服务器。为了提高ARM服务器的整体计算能力,通常在ARM服务器单板上集成多个ARM处理器,由多个ARM处理器并行工作。每个ARM处理器作为独立的个体,具有各自独立的操作系统、输入输出设备、文件处理系统等,在启动ARM处理器时,需要通过基本输入输出系统(Basic Input Output System,BIOS)进行系统引导,并为每个BIOS配置一个FLASH芯片以完成引导功能。
发明人在对现有技术的研究过程中发现,由于每个ARM服务器单板上集成了多个ARM处理器,而每个ARM处理器都配置一个FLASH芯片,从而导致每个ARM服务器单板上设置的FLASH芯片数量较多,占据了单板的印刷电路板(Printed Circuit Board,PCB)空间,且增加了单板上ARM处理器的整体功耗。
发明内容
本发明实施例提供一种共享闪存的方法、控制器及系统,以解决现有技术中为每个处理器分配一个FLASH,从而占据系统空间,导致系统整体功耗增加的问题。
为了解决上述技术问题,本发明实施例公开了如下技术方案:
一方面,提供一种共享闪存FLASH的方法,所述方法应用在包含至少两个处理器的系统中,所述系统还包含控制器以及至少一个闪存FLASH,所述FLASH的数量少于所述处理器的数量,所述控制器包含为每个所述处理器分配的缓存,所述方法包括:
所述控制器从所述FLASH中为每个处理器读取初始化指令;
将读取到的所述初始化指令写入为每个处理器分配的缓存中,以使所述每个处理器从为其分配的缓存中读取所述初始化指令。
结合一方面,在第一种可能的实现方式中,当所述系统中包含至少两个FLASH时,所述方法还包括:所述控制器预先保存所述至少两个FLASH中每个FLASH与处理器的对应关系,以及每个FLASH与为所述每个处理器分配的缓存的对应关系;
所述控制器从所述FLASH中为每个处理器读取初始化指令具体为:所述控制器按照保存的每个FLASH与处理器的对应关系,从与每个处理器对应的FLASH中为所述处理器读取初始化指令;
所述将读取到的所述初始化指令写入为每个处理器分配的缓存中具体为:将读取到的初始化指令按照每个FLASH与为每个处理器分配的缓存之间的对应关系,写入为每个处理器分配的缓存中。
结合一方面,或第一种可能的实现方式,在第二种可能的实现方式中,所述控制器从所述FLASH中为每个处理器读取初始化指令,包括:
当所述系统上电时,控制器根据所述每个处理器指示的起始地址从所述FLASH中读取容量小于所述缓存的空间容量的第一初始化指令;
当所述每个处理器从为其分配的缓存中读取所述第一初始化指令后,所述控制器从所述FLASH中按照地址顺序读取除所述第一初始化指令的剩余初始化指令。
结合一方面,或第一种可能的实现方式,或第二种可能的实现方式,在第三种可能的实现方式中,所述将读取到的所述初始化指令写入为每个处理器分配的缓存中,包括:
将读取到的所述初始化指令从为每个处理器分配的缓存的头部开始顺序写到所述缓存的尾部;
当所述缓存内写满所述初始化指令后,重新从所述缓存的头部开始写入读取到的初始化指令,直至所述控制器从所述FLASH中读取完所有初始化指令。
结合一方面,或第一种可能的实现方式,或第二种可能的实现方式,或第三种可能的实现方式,在第四种可能的实现方式中,所述为每个处理器分配的缓存的空间容量小于所述FLASH的空间容量。
另一方面,提供一种控制器,所述控制器应用在包含至少两个处理器的系统中,所述系统还包含至少一个闪存FLASH,所述FLASH的数量少于所述处理器的数量,所述控制器包含为每个所述处理器分配的缓存,所述控制器包括:
读取单元,用于从所述FLASH中为每个处理器读取初始化指令;
写入单元,用于将所述读取单元读取到的所述初始化指令写入为每个处理器分配的缓存中,以使所述每个处理器从为其分配的缓存中读取所述写入单元写入的所述初始化指令。
结合另一方面,在第一种可能的实现方式中,所述控制器还包括:
保存单元,用于当所述系统中包含至少两个FLASH时,预先保存所述至少两个FLASH中每个FLASH与处理器的对应关系,以及每个FLASH与为所述每个处理器分配的缓存的对应关系;
所述读取单元,具体用于按照所述保存单元保存的每个FLASH与处理器的对应关系,从与每个处理器对应的FLASH中为所述处理器读取初始化指令;
所述写入单元,具体用于将读取到的初始化指令按照所述保存单元保存的每个FLASH与为每个处理器分配的缓存之间的对应关系,写入为每个处理器分配的缓存中。
结合另一方面,或第一种可能的实现方式,在第二种可能的实现方式中,所述读取单元包括:
第一读取子单元,用于当所述系统上电时,根据所述每个处理器指示的起始地址从所述FLASH中读取容量小于所述缓存的空间容量的第一初始化指令;
第二读取子单元,用于当所述每个处理器从分配的缓存中读取所述第一初始化指令后,所述控制器从所述FLASH中按照地址顺序读取除所述第一初始化指令的剩余初始化指令。
结合另一方面,或第一种可能的实现方式,或第二种可能的实现方式,在第三种可能的实现方式中,所述写入单元,具体用于将所述读取单元读取到的所述初始化指令从为每个处理器分配的缓存的头部开始顺序写到所述缓存的尾部,以及当所述缓存内写满所述初始化指令后,重新从所述缓存的头部开始写入读取到的初始化指令,直至所述控制器从所述FLASH中读取完所有初始化指令。
又一方面,提供一种共享闪存FLASH的系统,所述系统包括:控制器、至少两个处理器及至少一个闪存FLASH,所述FLASH的数量少于所述处理器的数量,所述控制器包含为每个所述处理器分配的缓存,其中,
所述控制器,用于从所述FLASH中为每个处理器读取初始化指令,将读取到的所述初始化指令写入为每个处理器分配的缓存中,以使所述每个处理器从为其分配的缓存中读取所述初始化指令。
结合又一方面,在第一种可能的实现方式中,
所述控制器,还用于当所述系统中包含至少两个FLASH时,预先保存所述至少两个FLASH中每个FLASH与处理器的对应关系,以及每个FLASH与为所述每个处理器分配的缓存的对应关系;
所述控制器,具体用于按照保存的每个FLASH与处理器的对应关系,从与每个处理器对应的FLASH中为所述处理器读取初始化指令,以及将读取到的初始化指令按照每个FLASH与为每个处理器分配的缓存之间的对应关系,写入为每个处理器分配的缓存中。
结合又一方面,或第一种可能的实现方式,在第二种可能的实现方式中,
所述控制器,具体用于当所述系统上电时,根据所述每个处理器指示的起始地址从所述FLASH中读取容量小于所述缓存的空间容量的第一初始化指令,当所述每个处理器从分配的缓存中读取所述第一初始化指令后,所述控制器从所述FLASH中按照地址顺序读取除所述第一初始化指令的剩余初始化指令。
结合又一方面,或第一种可能的实现方式,或第二种可能的实现方式,在第三种可能的实现方式中,所述控制器,具体用于将读取到的所述初始化指令从为每个处理器分配的缓存的头部开始顺序写到所述缓存的尾部,当所述缓存内写满所述初始化指令后,重新从所述缓存的头部开始写入读取到的初始化指令,直至所述控制器从所述FLASH中读取完所有初始化指令。
结合又一方面,或第一种可能的实现方式,或第二种可能的实现方式,或第三种可能的实现方式,在第四种可能的实现方式中,所述控制器上为每个处理器分配的缓存的空间容量小于所述FLASH的空间容量。
本发明实施例应用在包含至少两个处理器的系统中,该系统还包含控制器以及至少一个FLASH,其中FLASH的数量少于处理器的数量,控制器包含为每个处理器分配的缓存,控制器从FLASH中为每个处理器读取初始化指令,将读取到的初始化指令写入为每个处理器分配的缓存中,以使每个处理器从分配的缓存中读取初始化指令。本发明实施例通过在系统中设置少于处理器数量的FLASH,从而节省了系统空间;并且由于本发明实施例通过系统中已有的控制器上的缓存资源,代替现有技术中与处理器数量一致的FLASH完成对所有处理器的初始化操作,从而降低了整个系统的功耗。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1A为应用本发明实施例的一个服务器系统的架构示意图;
图1B为现有技术中一个服务器单板上的处理器架构示意图;
图1C为图1A中一个服务器单板的架构示意图;
图2为本发明共享FLASH的方法的实施例流程图;
图3为本发明实施例中控制器对缓存进行读写操作的示意图;
图4为本发明控制器的实施例框图;
图5为本发明共享闪存FLASH的系统的实施例框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。
参见图1A,为应用本发明实施例的一个服务器系统的架构示意图:
该系统由若干服务器单板组成,为了示例方便,图1A中仅示出了六个服务器单板。各个服务器单板之间通过网络进行互联,均连接到交换机(SWITCH)上,该交换机可以为扩展的外设组件互连标准(Peripheral Component Interconnect Express,PCI-E)交换机,或者以太网(Ether Net,ETH)交换机。在每个服务器单板上集成了若干处理器,每个处理器都对应于一个独立的计算机系统,具备独立的操作系统、输入输出设备和文件系统等。上述处理器可以具体为ARM处理器,PPC(Power PC)处理器,无内部互锁流水级(MicroprocessorWithout Interlocked Piped Stages,MIPS)处理器,X86处理器等,例如,其中ARM处理器上集成Linux操作系统。
参见图1B,为现有技术中一个服务器单板上的处理器架构示意图:
其中,为了示例方便,图1B中示出了一个服务器单板上具有三个处理器,每个处理器均包含一个CPU和为该CPU配置的FLASH,每个处理器的CPU均连接到图1A中示出的交换机上。由图1B可知,每个服务器单板上需要配置与处理器数量一致的FLASH。
参见图1C,为图1A中一个服务器单板的架构示意图:
其中,为了示例方便,图1C中仍然示出一个服务器单板上具有三个处理器,每个处理器均包含一个CPU,与图1B中不同,图1C中的服务器单板上仅配置了一个FLASH,该FLASH可以连接服务器单板上的复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)或者现场可编程门阵列(Field Programmable Gate Array,FPGA)芯片,图1C中以示出FPGA芯片为例,将FPGA芯片上的随机存储器(Random Access Memory,RAM)资源作为FLASH芯片的代理Buffer,即将上述RAM资源中空闲的,可以被利用的资源进行划分,为每个处理器的CPU分配一段独立的Buffer。
需要说明的是,上述图1A和图1C仅示出了一种本发明实施例可能的应用场景,以便后续可以对本发明实施例进行详细的描述。在实际的应用中,本发明实施例中涉及的系统可以是图1A和图1C中示出的一个服务器单板,也可以是图1A中示出的服务器系统中,由具有相同型号的处理器组成的系统,对此本发明实施例不进行限制;无论对于上述何种系统,该系统中还包括控制器,以及数量少于处理器数量的FLASH,在控制器上包含为系统中每个处理器分配的缓存,与现有系统中为每个处理器配置一个FLASH不同,应用本发明实施例可以根据需要灵活减少系统中FLASH的数量,优选的,本发明实施例的每个系统中包含一个FLASH。下面分别描述本发明实施例中共享FLASH的方法、控制器及服务器。
参见图2,为本发明共享FLASH的方法的实施例流程图:
步骤201:控制器从FLASH中为每个处理器读取初始化指令。
在现有的服务器系统中,每个服务器单板上通常会设置一个控制器,该控制器的具体实现形式可以为一块逻辑芯片,例如CPLD芯片或者FPGA芯片,该逻辑芯片可以用于在服务器单板上实现辅助控制功能。由于逻辑芯片上通常配置有RAM资源,因此本发明实施例可以将上述RAM资源中的部分RAM资源,作为FLASH的代理Buffer(本发明实施例中描述的为处理器分配的缓存),即将上述部分RAM资源进行划分,为每个处理器分配一段代理Buffer,通过该代理Buffer完成对单个处理器上电后的基本输入输出系统(BIOS,Basic InputOutput System)初始化操作。
BIOS是一组固化到处理器上的程序,它保存着处理器最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。其主要功能是为处理器提供最底层的、最直接的硬件设置和控制。通常处理器上电后,需要通过BIOS进行系统引导,在引导时需要采用FLASH上存储的初始化指令。
本发明实施例中,为每个处理器划分的代理Buffer的大小可以与FLASH大小相同,或者,也可以小于FLASH的大小,例如,为每个处理器划分512字节的代理Buffer,本发明实施例中用BUFF_SIZE表示每个代理Buffer的大小。
本步骤中,可选的,当系统初始上电时,控制器可以根据每个处理器指示的起始地址从FLASH中读取容量小于分配的缓存的空间容量的第一初始化指令,当每个处理器从分配的缓存中读取第一初始化指令后,控制器从FLASH中按照地址顺序读取除第一初始化指令的剩余初始化指令。
步骤202:将读取到的初始化指令写入为每个处理器分配的缓存中,以使每个处理器从分配的缓存中读取写入的初始化指令。
可选的,控制器将读取到的初始化指令从为每个处理器分配的缓存的头部开始顺序写到缓存的尾部,当该缓存内写满所述初始化指令后,控制器重新从该缓存的头部开始写入读取到的初始化指令,直至控制器从FLASH中读取完所有初始化指令。
本步骤中,可选的,当控制器未接收到处理器的跳转指令时,控制器从FLASH上顺序读取初始化指令并写入为处理器分配的缓存中,相应的,处理器从该分配的缓存中,按照初始化指令写入缓存的顺序读取初始化指令;当控制器接收到处理器的跳转指令,且跳转指令指示的FLASH上的地址所对应的初始化指令已写入为该处理器分配的缓存时,则通知处理器从所述缓存上跳转指令指示的位置开始读取已写入的初始化指令。例如,假设控制器未接收到跳转指令,并且控制器已经将FLASH上地址0至地址127对应的初始化指令读入到为处理器分配的缓存中,则处理器从缓存中地址0对应的初始化指令开始,顺序读取初始化指令;假设当处理器读取到地址50对应的初始化指令时,控制器接收到跳转指令,指示需要读取地址100对应的初始化指令,控制器判断地址100对应的初始化指令已经写入缓存,则控制器可以通知处理器从地址50对应的初始化指令处,跳转到地址100对应的初始化指令处进行读取。
可选的,上述实施例中,在BIOS初始化操作过程中,当处理器发出的跳转指令指示的FLASH上的地址所对应的初始化指令未写入为该处理器分配的缓存时,按照该跳转指令指示的FLASH上的地址从FLASH读取初始化指令,将读取到的初始化指令从为处理器分配的缓存的头部开始顺序写入该缓存,以使处理器从该缓存的头部开始读取初始化指令。
本发明实施例中,当一个服务器单板上包含一个控制器及至少两个FLASH时,控制器预先保存至少两个FLASH中每个FLASH与处理器的对应关系,以及每个FLASH与为所述每个处理器分配的缓存的对应关系;相应的,控制器按照保存的每个FLASH与处理器的对应关系,从与每个处理器对应的FLASH中为处理器读取初始化指令,并将读取到的初始化指令按照每个FLASH与为每个处理器分配的缓存之间的对应关系,写入为每个处理器分配的缓存中。本发明实施例中,当一个服务器单板上有多个控制器时,则每个处理器与其中一个控制器连接,对于每一个控制器,由该控制器为所连接的处理器划分缓存,相应的,每个处理器从所连接控制器为其划分的缓存上读取初始化指令。
另外,对于系统中的处理器,当某个处理器在预设的时间内未从为其分配的缓存中读取初始化指令时,则可以确定该处理器发生异常。由于控制器为每个处理器都划分了缓存,因此每个处理器都从其各自的缓存中读取初始化指令,当某个处理器发生异常时,不影响其他处理器从对应的缓存中读取初始化指令。
由上述实施例可见,本发明实施例通过在系统中设置少于处理器数量的FLASH,从而节省了系统空间;并且由于本发明实施例通过系统中已有的控制器上的缓存资源,代替现有技术中与处理器数量一致的FLASH完成对所有处理器的初始化操作,从而降低了整个系统的功耗。
参见图3,为本发明实施例中一种控制器对缓存进行读写操作的示意图:其中,对于每个处理器对应的一个缓存空间,控制器可以为该缓存空间分配一个FLASH读指针和一个CPU读指针,FLASH读指针用于指示控制器从FLASH中读入初始化指令,CPU读指针用于控制器控制处理器从缓存空间读出初始化指令。
通常每个处理器都会划分出一部分地址空间用来访问FLASH上的数据,用于系统上电后的BIOS初始化操作。这部分划分出的地址空间与FLASH地址空间一一对应,范围由起始地址和结束地址进行限定,其中划分出的地址空间的起始地址与FLASH的起始地址对应,划分出的地址空间的起始地址与结束地址之间的空间大小与FLASH的空间大小一致,以便于在读取初始化指令的过程中,根据划分出的地址空间的地址对应到FLASH地址空间的地址,从而对FLASH地址上存储的初始化指令进行读取。
本发明实施例中,处理器不再直接从FLASH获取初始化指令,而是由控制器接收处理器指示的存储空间的地址,并按照该存储空间的地址对应到FLASH的地址,将该FLASH的地址上存储的初始化指令读取到为处理器分配的缓存中,并由处理器从缓存中读入初始化指令。其中,当系统上电时,为了减小初始化操作的时间,控制器初始可以无需从FLASH中读取与缓存空间大小一致的初始化指令,例如,可以首先从FLASH读取缓存空间大小一半的初始化指令并写入缓存,然后处理器就可以开始从缓存读取初始化指令,后续控制器持续从FLASH读取剩余的初始化指令并写入缓存,而处理器同步从缓存读取初始化指令,直至处理器读取完所有的初始化指令。
在控制器从FLASH读取初始化指令并写入缓存的过程中,当控制器接收到处理器发送的跳转指令时,如果跳转指令指示的FLASH的地址上存储的初始化指令当前已经读取到缓存中,则处理器直接从读取到缓存中的初始化指令开始顺序读取初始化指令;如果跳转指令指示的FLASH的地址上存储的初始化指令当前还未读取到缓存中,则控制器从该跳转指令指示的FLASH的地址开始顺序读取初始化指令,并从缓存的头部开始写入读取的初始化指令(即覆盖缓存中已经读入的初始化指令),而处理器相应从缓存读取跳转指令对应的初始化指令。
下面结合图3中示出的六个阶段,对应用本发明共享闪存FLASH的实施例中,单个处理器上电后的BIOS初始化过程进行描述。
在阶段①,系统初始上电时,FLASH读指针和CPU读指针均指示缓存空间的头部;
在阶段②,系统初始上电后,控制器从FLASH中读入缓存空间大小一半的初始化指令,此时FLASH读指针指示缓存空间的中部,CPU读指针仍然指示缓存空间的头部,即处理器还未开始从缓存空间读取初始化指令;
在阶段③,当控制器继续从FLASH读入初始化指令时,FLASH读指针相应从缓存空间中部向下移动,此时处理器开始从缓存空间读取初始化指令,相应的,CPU读指针从缓存空间头部开始向下移动;
在阶段④,当FLASH读指针移动到缓存空间尾部时,说明控制器已经从FLASH中读入了与缓存空间大小一致的初始化指令,则FLASH指针重新跳转到缓存空间的头部,此时处理器继续从缓存空间读取初始化指令,CPU读指针在缓存空间内继续向下移动;
在阶段⑤,由于缓存空间内CPU读指针所指示位置以上的存储空间内的初始化指令已经由处理器读取过,因此控制器将从FLASH读取的初始化指令写入缓存空间头部,FLASH读指针从缓存空间的头部开始继续向下移动,相应的,处理器读取完缓存空间的初始化指令后,跳转到缓存空间的头部继续读取初始化指令,此时CPU读指针相应跳转到缓存空间头部;
在阶段⑥,当控制器接收到处理器发送的跳转指令,且该跳转指令指示的FLASH地址上存储的初始化指令未读取到缓存空间,则FLASH读指针和CPU读指针同时跳转到缓存空间的头部,后续由控制器从跳转指令指示的FLASH的地址开始顺序读取初始化指令,原来缓存空间中未被CPU读指针读取完的初始化指令将被FLASH读指针按照跳转指令读取的初始化指令覆盖,并重复执行从前述阶段①开始的流程,直至处理器从缓存空间读取完FLASH上所有的初始化指令。
与本发明共享闪存FLASH的方法的实施例相对应,本发明还提供了控制器和共享闪存FLASH的系统的实施例。
参见图4,为本发明控制器的实施例框图,该控制器应用在包含至少两个处理器的系统中,该系统还包含至少一个闪存FLASH,所述FLASH的数量少于所述处理器的数量,所述控制器包含为每个所述处理器分配的缓存,对于系统的详细描述与前述方法实施例部分一致,在此不再赘述。
该控制器包括:读取单元410和写入单元420。
其中,读取单元410,用于从所述FLASH中为每个处理器读取初始化指令;
写入单元420,用于将所述读取单元410读取到的所述初始化指令写入为每个处理器分配的缓存中,以使所述每个处理器从分配的缓存中读取所述写入单元420写入的所述初始化指令。
可选的,所述控制器还可以包括:
保存单元430,用于当所述系统中包含至少两个FLASH时,预先保存所述至少两个FLASH中每个FLASH与处理器的对应关系,以及每个FLASH与为所述每个处理器分配的缓存的对应关系;
相应的,所述读取单元410,具体用于按照所述保存单元430保存的每个FLASH与处理器的对应关系,从与每个处理器对应的FLASH中为所述处理器读取初始化指令;
所述写入单元420,具体用于将读取到的初始化指令按照所述保存单元430保存的每个FLASH与为每个处理器分配的缓存之间的对应关系,写入为每个处理器分配的缓存中。
可选的,读取单元410可以包括:
第一读取子单元411,用于当所述系统上电时,根据所述每个处理器指示的起始地址从所述FLASH中读取容量小于所述缓存的空间容量的第一初始化指令;
第二读取子单元412,用于当所述每个处理器从分配的缓存中读取所述第一初始化指令后,所述控制器从所述FLASH中按照地址顺序读取除所述第一初始化指令的剩余初始化指令。
可选的,写入单元420,可以具体用于将所述读取单元410读取到的所述初始化指令从为每个处理器分配的缓存的头部开始顺序写到所述缓存的尾部,以及当所述缓存内写满所述初始化指令后,重新从所述缓存的头部开始写入读取到的初始化指令,直至所述控制器从所述FLASH中读取完所有初始化指令。
参见图5,为本发明共享闪存FLASH的系统的实施例框图:
该系统包括:控制器510、若干处理器520及至少一个闪存FLASH530,该FLASH的数量少于处理器的数量,控制器510包含为每个处理器分配的缓存。为了示例方便,图5中仅示出了三个处理器520和一个FLASH530。
其中,所述控制器510,用于从所述FLASH530中为每个处理器520读取初始化指令,将读取到的所述初始化指令写入为每个处理器520分配的缓存中,以使所述每个处理器520从分配的缓存中读取所述初始化指令。
可选的,当所述系统中包含至少两个FLASH时,所述控制器510,还用于预先保存所述至少两个FLASH中每个FLASH与处理器的对应关系,以及每个FLASH与为所述每个处理器分配的缓存的对应关系;相应的,所述控制器510,具体用于按照保存的每个FLASH与处理器的对应关系,从与每个处理器对应的FLASH中为所述处理器读取初始化指令,以及将读取到的初始化指令按照每个FLASH与为每个处理器分配的缓存之间的对应关系,写入为每个处理器分配的缓存中。
可选的,所述控制器510,可以具体用于当所述系统上电时,根据所述每个处理器520指示的起始地址从所述FLASH510中读取容量小于所述缓存的空间容量的第一初始化指令,当所述每个处理器520从分配的缓存中读取所述第一初始化指令后,所述控制器从所述FLASH530中按照地址顺序读取除所述第一初始化指令的剩余初始化指令。
可选的,所述控制器510,可以具体用于将读取到的所述初始化指令从为每个处理器分配的缓存的头部开始顺序写到所述缓存的尾部,当所述缓存内写满所述初始化指令后,重新从所述缓存的头部开始写入读取到的初始化指令,直至所述控制器从所述FLASH530中读取完所有初始化指令。
上述实施例中,优选的,控制器510上为每个处理器520分配的缓存的空间容量可以小于所述FLASH530的空间容量。
由上述实施例可见,本发明实施例应用在包含至少两个处理器的系统中,该系统还包含控制器以及至少一个FLASH,其中FLASH的数量少于处理器的数量,控制器包含为每个处理器分配的缓存,控制器从FLASH中为每个处理器读取初始化指令,将读取到的初始化指令写入为每个处理器分配的缓存中,以使每个处理器从分配的缓存中读取初始化指令。本发明实施例通过在系统中设置少于处理器数量的FLASH,从而节省了系统空间;并且由于本发明实施例通过系统中已有的控制器上的缓存资源,代替现有技术中与处理器数量一致的FLASH完成对所有处理器的初始化操作,从而降低了整个系统的功耗。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (11)

1.一种共享闪存FLASH的方法,其特征在于,所述方法应用在包含至少两个处理器的系统中,所述系统还包含控制器以及至少一个闪存FLASH,所述FLASH的数量少于所述处理器的数量,所述控制器包含为每个所述处理器分配的缓存,所述方法包括:
所述控制器从所述FLASH中为每个处理器读取初始化指令;
将读取到的所述初始化指令写入为每个处理器分配的缓存中,以使所述每个处理器从为其分配的缓存中读取所述初始化指令;
其中,所述控制器从所述FLASH中为每个处理器读取初始化指令,包括:
当所述系统上电时,控制器根据所述每个处理器指示的起始地址从所述FLASH中读取容量小于所述缓存的空间容量的第一初始化指令;
当所述每个处理器从为其分配的缓存中读取所述第一初始化指令后,所述控制器从所述FLASH中按照地址顺序读取除所述第一初始化指令的剩余初始化指令。
2.根据权利要求1所述的方法,其特征在于,当所述系统中包含至少两个FLASH时,所述方法还包括:所述控制器预先保存所述至少两个FLASH中每个FLASH与处理器的对应关系,以及每个FLASH与为所述每个处理器分配的缓存的对应关系;
所述控制器从所述FLASH中为每个处理器读取初始化指令具体为:所述控制器按照保存的每个FLASH与处理器的对应关系,从与每个处理器对应的FLASH中为所述处理器读取初始化指令;
所述将读取到的所述初始化指令写入为每个处理器分配的缓存中具体为:将读取到的初始化指令按照每个FLASH与为每个处理器分配的缓存之间的对应关系,写入为每个处理器分配的缓存中。
3.根据权利要求1或2所述的方法,其特征在于,所述将读取到的所述初始化指令写入为每个处理器分配的缓存中,包括:
将读取到的所述初始化指令从为每个处理器分配的缓存的头部开始顺序写到所述缓存的尾部;
当所述缓存内写满所述初始化指令后,重新从所述缓存的头部开始写入读取到的初始化指令,直至所述控制器从所述FLASH中读取完所有初始化指令。
4.根据权利要求1或2所述的方法,其特征在于,所述为每个处理器分配的缓存的空间容量小于所述FLASH的空间容量。
5.一种控制器,其特征在于,所述控制器应用在包含至少两个处理器的系统中,所述系统还包含至少一个闪存FLASH,所述FLASH的数量少于所述处理器的数量,所述控制器包含为每个所述处理器分配的缓存,所述控制器包括:
读取单元,用于从所述FLASH中为每个处理器读取初始化指令;
写入单元,用于将所述读取单元读取到的所述初始化指令写入为每个处理器分配的缓存中,以使所述每个处理器从为其分配的缓存中读取所述写入单元写入的所述初始化指令;
其中,所述读取单元包括:
第一读取子单元,用于当所述系统上电时,根据所述每个处理器指示的起始地址从所述FLASH中读取容量小于所述缓存的空间容量的第一初始化指令;
第二读取子单元,用于当所述每个处理器从分配的缓存中读取所述第一初始化指令后,所述控制器从所述FLASH中按照地址顺序读取除所述第一初始化指令的剩余初始化指令。
6.根据权利要求5所述的控制器,其特征在于,所述控制器还包括:
保存单元,用于当所述系统中包含至少两个FLASH时,预先保存所述至少两个FLASH中每个FLASH与处理器的对应关系,以及每个FLASH与为所述每个处理器分配的缓存的对应关系;
所述读取单元,具体用于按照所述保存单元保存的每个FLASH与处理器的对应关系,从与每个处理器对应的FLASH中为所述处理器读取初始化指令;
所述写入单元,具体用于将读取到的初始化指令按照所述保存单元保存的每个FLASH与为每个处理器分配的缓存之间的对应关系,写入为每个处理器分配的缓存中。
7.根据权利要求5或6所述的控制器,其特征在于,
所述写入单元,具体用于将所述读取单元读取到的所述初始化指令从为每个处理器分配的缓存的头部开始顺序写到所述缓存的尾部,以及当所述缓存内写满所述初始化指令后,重新从所述缓存的头部开始写入读取到的初始化指令,直至所述控制器从所述FLASH中读取完所有初始化指令。
8.一种共享闪存FLASH的系统,其特征在于,所述系统包括:控制器、至少两个处理器及至少一个闪存FLASH,所述FLASH的数量少于所述处理器的数量,所述控制器包含为每个所述处理器分配的缓存,其中,
所述控制器,用于从所述FLASH中为每个处理器读取初始化指令,将读取到的所述初始化指令写入为每个处理器分配的缓存中,以使所述每个处理器从为其分配的缓存中读取所述初始化指令;
所述控制器,具体用于当所述系统上电时,根据所述每个处理器指示的起始地址从所述FLASH中读取容量小于所述缓存的空间容量的第一初始化指令,当所述每个处理器从分配的缓存中读取所述第一初始化指令后,所述控制器从所述FLASH中按照地址顺序读取除所述第一初始化指令的剩余初始化指令。
9.根据权利要求8所述的系统,其特征在于,
所述控制器,还用于当所述系统中包含至少两个FLASH时,预先保存所述至少两个FLASH中每个FLASH与处理器的对应关系,以及每个FLASH与为所述每个处理器分配的缓存的对应关系;
所述控制器,具体用于按照保存的每个FLASH与处理器的对应关系,从与每个处理器对应的FLASH中为所述处理器读取初始化指令,以及将读取到的初始化指令按照每个FLASH与为每个处理器分配的缓存之间的对应关系,写入为每个处理器分配的缓存中。
10.根据权利要求8或9所述的系统,其特征在于,
所述控制器,具体用于将读取到的所述初始化指令从为每个处理器分配的缓存的头部开始顺序写到所述缓存的尾部,当所述缓存内写满所述初始化指令后,重新从所述缓存的头部开始写入读取到的初始化指令,直至所述控制器从所述FLASH中读取完所有初始化指令。
11.根据权利要求8或9所述的系统,其特征在于,所述控制器上为每个处理器分配的缓存的空间容量小于所述FLASH的空间容量。
CN201280002250.8A 2012-10-25 2012-10-25 共享闪存的方法、控制器及系统 Active CN103907108B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2012/083496 WO2014063329A1 (zh) 2012-10-25 2012-10-25 共享闪存的方法、控制器及系统

Publications (2)

Publication Number Publication Date
CN103907108A CN103907108A (zh) 2014-07-02
CN103907108B true CN103907108B (zh) 2017-07-07

Family

ID=50543883

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280002250.8A Active CN103907108B (zh) 2012-10-25 2012-10-25 共享闪存的方法、控制器及系统

Country Status (2)

Country Link
CN (1) CN103907108B (zh)
WO (1) WO2014063329A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105005363B (zh) * 2015-07-14 2019-01-22 深圳市英飞云智能技术有限公司 基于通用型arm架构的服务器平台
CN106803036B (zh) * 2017-02-16 2021-03-30 中云信安(深圳)科技有限公司 系统运行中数据流的安全检测和容错方法
CN106874796B (zh) * 2017-02-16 2021-03-30 中云信安(深圳)科技有限公司 系统运行中指令流的安全检测和容错方法
CN110119286A (zh) * 2019-04-11 2019-08-13 厦门亿联网络技术股份有限公司 一种基于模拟Flash芯片的固件引导实现方法
CN111338998B (zh) * 2020-02-20 2021-07-02 深圳震有科技股份有限公司 基于amp系统的flash访问处理方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1553338A (zh) * 2003-06-08 2004-12-08 华为技术有限公司 中央处理单元启动的方法及系统
CN101446886A (zh) * 2008-12-30 2009-06-03 成都市华为赛门铁克科技有限公司 一种存储设备及其随机读写方法
CN102150147A (zh) * 2008-07-03 2011-08-10 惠普开发有限公司 存储器服务器

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101406493B1 (ko) * 2007-07-19 2014-06-12 엘지전자 주식회사 플래쉬 메모리를 구비한 컴퓨터 및 플래쉬 메모리의구동방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1553338A (zh) * 2003-06-08 2004-12-08 华为技术有限公司 中央处理单元启动的方法及系统
CN102150147A (zh) * 2008-07-03 2011-08-10 惠普开发有限公司 存储器服务器
CN101446886A (zh) * 2008-12-30 2009-06-03 成都市华为赛门铁克科技有限公司 一种存储设备及其随机读写方法

Also Published As

Publication number Publication date
WO2014063329A1 (zh) 2014-05-01
CN103907108A (zh) 2014-07-02

Similar Documents

Publication Publication Date Title
US11042297B2 (en) Techniques to configure a solid state drive to operate in a storage mode or a memory mode
CN103907108B (zh) 共享闪存的方法、控制器及系统
TWI526926B (zh) 平衡對具有不同記憶體種類的記憶體進行存取的技術
US20190294382A1 (en) Mass storage virtualization for cloud computing
KR20200016809A (ko) 솔리드-스테이트 스토리지 미디어의 격리 영역들의 가상화
CN104615488A (zh) 异构多核可重构计算平台上任务调度的方法和装置
US20160188780A1 (en) Implementing system irritator accelerator fpga unit (afu) residing behind a coherent attached processors interface (capi) unit
US8996788B2 (en) Configurable flash interface
CN103092810A (zh) 具有可编程虚拟端口的处理器
KR20170141205A (ko) Dsp 엔진 및 향상된 컨텍스트 스위치 기능부를 구비한 중앙 처리 유닛
CN106126124A (zh) 一种数据处理方法及电子设备
CN106648758A (zh) 一种多核处理器boot启动系统及方法
CN104346132A (zh) 应用于智能卡虚拟机运行的控制装置及智能卡虚拟机
US10705993B2 (en) Programming and controlling compute units in an integrated circuit
EP2689325B1 (en) Processor system with predicate register, computer system, method for managing predicates and computer program product
CN106980513A (zh) 一种双引导文件的切换方法及装置
WO2022083158A1 (zh) 数据处理的方法、实例以及系统
CN101908016A (zh) 多核心嵌入式装置的除错信息与断点管理方法
CN104834501A (zh) 一种基于l结构处理器的寄存器和寄存器操作方法
CN116069451B (zh) 一种虚拟化方法、装置、设备、介质、加速器及系统
CN109408407A (zh) 显示内存的分配方法和装置
CN115374740A (zh) 面向云服务的性能与隔离性定制化硬件虚拟化方法及装置
CN116909689B (zh) 虚拟机热迁移方法、装置、存储介质和电子设备
WO2016053146A1 (ru) Компьютерная система
CN117666944A (zh) 用于执行数据处理功能的方法和存储装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant