CN103123595A - 使用即时数据分块的文件输入/输出调度 - Google Patents

使用即时数据分块的文件输入/输出调度 Download PDF

Info

Publication number
CN103123595A
CN103123595A CN2012105026757A CN201210502675A CN103123595A CN 103123595 A CN103123595 A CN 103123595A CN 2012105026757 A CN2012105026757 A CN 2012105026757A CN 201210502675 A CN201210502675 A CN 201210502675A CN 103123595 A CN103123595 A CN 103123595A
Authority
CN
China
Prior art keywords
request
instruction
data
layer
chunk
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.)
Granted
Application number
CN2012105026757A
Other languages
English (en)
Other versions
CN103123595B (zh
Inventor
A.R.萨勒
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.)
Sony Interactive Entertainment LLC
Original Assignee
Sony Computer Entertainment America LLC
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 Sony Computer Entertainment America LLC filed Critical Sony Computer Entertainment America LLC
Publication of CN103123595A publication Critical patent/CN103123595A/zh
Application granted granted Critical
Publication of CN103123595B publication Critical patent/CN103123595B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/5027Allocation 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/5038Allocation 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 the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/506Constraint

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明为使用即时数据分块的文件输入/输出调度,从在处理器上运行的应用程序接收传入I/O请求。包括处理器可执行指令的树形结构定义与I/O请求相关联的一个或多个处理层。所述指令在所述一个或多个处理层中的每一个处将I/O请求中的数据划分成一个或多个组块。每个指令具有对前一层中的一个或多个相应指令的相关联数据依赖性。通过确定每个组块的位置和不同处理层的组块之间的数据依赖性将所述指令排序成处理次序。将一个或多个指令***至少部分地取决于所述处理次序的调度表。根据所述处理次序,通过用处理器根据调度表来执行指令而服务于I/O请求。

Description

使用即时数据分块的文件输入/输出调度
本申请为分案申请,其母案的发明名称为“使用即时数据分块的文件输入/输出调度”,申请日为2010年10月14日,申请号为201080001671.X。
优先权声明
本申请要求2009年10月26日提交的授予Andrew R. Thaler的题为FILE INPUT/OUTPUT SCHEDULING USING IMMEDIATE DATA CHUNKING的美国临时申请号61/255,013的优先权,其整个公开通过引用结合到本文中。
本申请要求2010年10月12日提交的授予Andrew R. Thaler的题为FILE INPUT/OUTPUT SCHEDULING USING IMMEDIATE DATA CHUNKING的美国专利申请号12/902,768的优先权,其整个公开通过引用结合到本文中。
技术领域
本发明的实施例涉及计算机游戏及相关应用程序,更特别地,涉及计算机游戏及相关应用程序中的文件输入/输出(I/O)管理。
背景技术
诸如视频游戏之类的许多软件应用程序包括文件输入/输出(I/O)调度器以使得应用程序内的媒体访问更高效且可靠。文件I/O***(FIOS)是具有包括调度器和可选I/O过滤器层的多个部分的用于访问文件的中间件(middleware)层。所述调度器通常被设计为将I/O请求最优地排序,以便其在受到任意最后期限和优先级约束的最短可能时间内完成。所述过滤器层可以提供诸如解压缩或高速缓存之类的附加服务。
许多不同的游戏组件要求对存储媒体中的文件进行I/O访问。音频组件加载音频文件;游戏播放引擎加载层级定义;图形组件加载纹理图和模型;电影组件加载视听文件;并且子***加载大型WAD文件。所述媒体可以是游戏递送媒体,诸如光盘(通用媒体盘(UMD)、压缩盘(CD)、数字视频盘(DVD)、蓝光盘等)、诸如硬盘之类的中间存储媒体、或随着平台演进的其它媒体类型。
诸如视频游戏之类的单个应用程序通常具有多个组件,每个组件具有其自己的I/O要求。某些要求对媒体的流式访问,其中,I/O***将文件中的数据流式传输到组件,因此组件可以接连地向游戏机呈现流式传输数据。例如,音频组件通常流式传输用于声音轨重放的音频文件;电影组件流式传输视听内容以重放用于播放器的电影。其它组件仅需要非流式访问,其中,其按照在本文中称为组块(chunk)的部分从文件获取(retrieve)数据以供组件处理。虽然这些组件不要求稳定的数据流以便处理,但组块的递送定时常常是关键的。如果应用程序在其需要时未接收到数据,则性能可能受损失。
当前,分块(chunking)(即,将用于I/O请求的数据分成部分/组块)在I/O请求的执行期间发生。在执行之前不确定块之间的数据依赖性,并且这导致I/O请求的处理时的低效。例如,给定I/O请求可能要求在传送之前需要被解密和解压缩的数据。I/O***可能要求给定块的解密在解压缩之前发生,但不同组块大小可以与解密和解压缩相关联。例如,与解密相关联的组块大小可以具有诸如64千字节的固定值,而与解压缩相关联的组块大小可以是可变的。因此,在没有确定被解密的组块和被解压缩的组块之间的数据依赖性的情况下,必须在能够将文件解压缩之前将整个文件解密,而不是一旦已处理了必要的解密组块就发起给定组块的解压缩。
同样地,给定I/O请求要求可以在执行期间用当前的分块形式低效地处理从多个媒体源获取的数据。在执行之前没有确定组块之间的数据依赖性的情况下,当同时处理来自两个媒体设备的数据在理论上可能时,媒体设备可以在来自另一媒体设备的数据正被处理的同时是空闲的。这最终使视频游戏或其它应用程序的功能减慢。
此外,视频游戏常常执行大量的I/O。游戏事件常常是用必须满足的最后期限进行时间驱动的。例如,如果播放器从点A行进到点B,则游戏需要具有用于在播放器到达点B之前加载的与点B相关联的数据的文件。游戏组件可以使用低水平I/O基元来从媒体获取数据,但这些基元(primitive)不处理在多个组件同时要求来自相同设备的数据时的设备竞争。堵塞的(jammed up)I/O请求可能中断流式传输数据流或阻止关键数据组块在需要时到达组件。 
由于应用程序的组件通常不知道彼此的I/O活动,所以其I/O请求常常导致具有相当大的找寻(overseeking)量的非常低效的I/O模式(来回搜索数据)。随着游戏变大,找寻和低效数据获取增加。
本发明的实施例在这种背景下出现。
附图说明
通过结合附图来考虑以下详细说明,可以很容易理解本发明的讲授内容,在附图中:
图1是根据本发明的实施例的实现文件I/O***(FIOS)的***的框图。
图2是根据本发明的替换实施例的实现FIOS的替换***的框图。
图3是根据本发明的实施例的文件输入/输出***(FIOS)软件的框图。
图4是举例说明根据本发明的实施例的FIOS的操作流程的数据流程图。
图5是举例说明根据本发明的实施例的在FIOS中使用的软件调度器的示例的流程图。
具体实施方式
虽然以下详细说明出于说明的目的包含许多特定细节,但本领域的普通技术人员应认识到以下细节的许多变更和修改在本发明的范围内。因此,在不失一般性并且不对所要求保护的发明的施加限制的情况下阐述下述本发明的实施例。
可以在提供集中层的文件I/O***(FIOS)周围实现本发明的实施例,其中用于***的所有I/O通过所述集中层。FIOS可以包括创建用于每个单独I/O请求的最优处理的树形结构的指令,和调度I/O请求并确定最高效地服务于(service)I/O请求的次序的指令。
举例来说,可以将计算机实现的***100配置为实现如同1所示的根据本发明的实施例的文件I/O***(FIOS)。举例来说,但不失一般性地,可以将***100实现为个人计算机、视频游戏机、手持式游戏设备、蜂窝电话、个人数字助理、或适合于实施本发明的实施例的其它数字设备。***100可以包括处理单元105和耦合到处理单元105的主存储器106。可以将CPU 105配置为运行软件应用程序并可选地运行操作***。本发明的某些实施例可以利用某些类型的处理器架构,其中,CPU 105包括主处理器105A和具有其自己的相关联本地存储器106B的辅助处理器105B。特别地,此类处理器架构的一个示例是单元处理器(cell processor)。在例如版权属于国际商业机器公司、索尼计算机娱乐公司、东芝公司2005年8月8日的Cell Broadband Engine Architecture中详细地描述了单元处理器架构的示例,其拷贝可以在http://cell.scei.co.jp/处下载,其全部内容通过引用结合到本文中。
主存储器106可以存储供CPU 105使用的应用程序和数据。主存储器106可以采取例如RAM、DRAM、ROM等集成电路的形式。可以以能够在处理器105上执行的指令的形式将计算机程序101存储在存储器106中。可以将程序101的指令配置为特别地实现具有下述某些特征的文件输入/输出***(FIOS)。存储器106可以包含I/O队列101Q,例如,采取用于FIOS程序101所使用的传入(incoming)、已调度、已发布、已完成、和自由I/O请求的栈或队列的形式。下面还描述了此类队列的示例。
举例来说,FIOS程序101可以包括指令:a)从应用程序103接收涉及媒体设备118的传入I/O请求,b)通过确定要传送的数据的组块(即部分)的位置和数据依赖性来创建被配置为形成用于I/O请求的最优处理次序的树形结构,c)将传入I/O请求***在存储器106中包含的调度表(schedule)中,其中,传入I/O请求在调度表内的位置至少部分地取决于树形结构的处理次序和d)根据所述调度表和树形结构来实施I/O请求。
客户端***100还包括众所周知的支持功能110,诸如输入/输出(I/O)元件111、电源(P/S)112、时钟(CLK)113、以及高速缓存(cache)114。客户端设备100还可以包括快速存储设备115,诸如提供用于应用程序和数据的非易失性存储的硬盘驱动器。特别地,可以将快速存储设备115用于对从较慢媒体设备118获取的文件116的临时或长期存储。快速存储设备115上的文件116另外可以来自除较慢媒体设备118之外的源。例如,文件116可以包括但不限于操作***文件、由应用程序创建的临时文件、诸如照片/音频/视频之类的用户数据、下载内容等等。举例来说,存储设备115可以是固定磁盘驱动器、可移动磁盘驱动器、闪速存储器设备、或磁带驱动器。较慢媒体设备118可以是大容量光盘驱动器,例如CD-ROM驱动器、DVD-ROM驱动器、高清晰度数字多功能盘(HD-DVD)驱动器、蓝光盘驱动器、UMD驱动器、或其它光学存储设备。可以将从媒体设备118预取的文件116临时存储在硬件高速缓存中的储存器115中以便快速加载到存储器106中。
可以使用一个或多个用户输入设备120将来自一个或多个用户的用户输入传达到***100。举例来说,可以经由I/O元件111将用户输入设备120中的一个或多个耦合到客户端设备100。适当输入设备120的示例包括键盘、鼠标、操纵杆、触控板、触摸屏、光笔、静物照相机或视频摄像机、和/或麦克风。客户端设备100可以包括网络接口125以促进经由电子通信网络127的通信。网络接口125可以被配置为通过局域网和广域网(例如因特网)来实现有线或无线通信。***100可以通过网络127经由一个或多个消息分组126来发送和接收数据和/或文件请求。
***还可以包括图形子***130,其可以包括图形处理单元(GPU)135和图形存储器140。图形存储器140可以包括用于存储用于输出图像的每个像素的像素数据的显示存储器(例如,帧缓冲器)。图形存储器140可以被集成在与GPU 135相同的设备中、作为单独的设备与GPU 135相连、和/或在存储器106内实现。可以直接从CPU 105向图形存储器140提供像素数据。可替换地,CPU 105可以为GPU 135提供定义期望输出图像的数据和/或指令,由此,GPU 135可以生成一个或多个输出图像的像素数据。定义期望输出图像的数据和/或指令可以被存储在存储器106和/或图形存储器140中。在实施例中,GPU 135可以被配置具有由用于由定义用于场景的几何结构、照明、阴影、纹理、运动、和/或摄像机参数的指令和数据生成用于输出图像的像素数据的3D再现能力。GPU 135还可以包括能够执行着色器程序的一个或多个可编程执行单元。
图形子***130可以从图形存储器140周期性地输出用于图像的像素数据以便显示在视频显示设备150上。视频显示设备150可以是能够响应于来自***100的信号而显示视觉信息的任何设备,包括CRT、LCD、等离子体、和OLED显示器。计算机***100可以为显示设备150提供模拟或数字信号。举例来说,显示器150可以包括显示文本、数字、图形符号或图像的阴极射线管(CRT)或平板屏幕。另外,显示器150可以包括产生可听或其他可检测声音的一个或多个音频扬声器。为了促进此类声音的生成,客户端设备100还可以包括适合于根据由CPU 105、存储器106、和/或储存器115提供的指令和/或数据来生成模拟或数字音频输出的音频处理器155。
包括CPU 105、存储器106、支持功能110、数据存储设备115、媒体设备118、用户输入设备120、网络接口125、和音频处理器155的***100的组件可以经由一个或多个数据总线160在操作上相互连接。这些组件可以以硬件、软件、固件、或这些中的两个或更多的某些组合来实现。
本发明的某些实施例可以利用单元处理器架构或类似处理器架构。图2举例说明根据本发明的实施例的被配置为实现FIOS的单元处理器200。单元处理器200包括主存储器202、单个Power处理器元件(PPE)204、以及八个协同处理器元件(SPE)206。举例来说,PPE 204可以包括具有相关联高速缓存的64位Power PC处理器单元(PPU)。例如服从CBEA***的某些实现可以在PPE 204中包括向量多媒体扩展单元。PPE 204可以是能够访问***管理资源(诸如存储器保护表)的通用处理单元。硬件资源可以被明确地映射到被PPE 204看到的实地址空间。因此,PPE 204可以直接通过使用适当的有效地址值来对这些资源中的任何一个进行寻址。PPE 204的主要功能是用于不同SPE 206的任务的管理和分配。PPU可以执行FIOS程序101的编码指令。
SPE 206是与PPE 240相比不那么复杂的计算单元,因为其不需要执行任何***管理功能。每个SPE 206包括有时称为协同处理器单元(SPU)的处理器单元和相关联的本地存储装置(LS)。SPE 206通常可以具有单指令多数据(SIMD)能力且通常处理数据并发起任何所需数据传送(根据由PPE 204设置的访问性质)以便执行其分配的任务。SPE 206可以在其本地存储装置中存储实现FIOS程序101的部分的指令207。SPE 206的目的是实现要求较高计算单元密度并能够有效地使用所提供的指令集的应用。虽然在本示例中示出8个SPE,但单元处理器200可以被配置具有任何数目的SPE。根据图2,存储器202、PPE 204、和SPE 206可以相互通信并通过环形元件互连总线210与I/O设备208通信。可以由PPE 204和SPE 206经由存储器接口控制器(MIC)来访问存储器202。
存储器202可以包含I/O队列203,例如,如下所述的传入、调度、发布、完成、自由、和预取队列。存储器202还可以包含具有与本文所述的FIOS程序101共有的特征的FIOS程序101的部分。PPE 204可以包括内部高速缓存(L1)和外部高速缓存(L2)。PPE可以将FIOS程序101的部分存储在其内部高速缓存(L1)中。FIOS程序101和SPE实现的文件传送指令207或其部分也可以被存储在存储器202以便在需要时供SPE 206和PPE 204访问。
举例来说,如图3所示,FIOS程序101可以包括媒体栈300以促进与诸如存储设备115或媒体设备118之类的硬件的对接。媒体栈300可以包括树形结构层301、调度器303、一个或多个媒体过滤器层305、设备媒体层307、处理器文件***(FS)读取层309、以及硬件层311。
树形结构层301创建映射表(map)以促进与要传送的单独I/O请求相关联的数据的最优处理。最初,创建限定了与给定I/O请求相关联的一个或多个处理层306(例如,解密、解压缩、去存档(de-archiving)等)的树形结构313。在树形结构313的每个层306处处理对于每个I/O请求所传送或接收到的数据,并且树形结构313被配置为在已经处理前一层中的足够数据之前不开始后续处理层。然后,树形结构313在一个或多个处理层306中的每一个处处将要传送或接收的数据分成一个或多个组块302。与特定处理层306相关联的块302具有对应于该特定处理层306的一个或多个大小。用于不同层的组块大小可以是不同的。树形结构313通过确定每个块302的位置和不同处理层306的组块302之间的数据依赖性304来形成用于不同层的块的最优处理次序。
举例来说,但非限制性地,I/O请求可以包括接收被加密且压缩的数据。最初,树形结构创建两个处理层(包括解密层和解压缩层)以便满足I/O请求。在本示例中,要传送的数据需要在其可以被应用程序接收到之前被解压缩且要传送的数据需要在其可以被解压缩之前被解密。树形结构层301根据处理层将要传送的数据分成组块(即数据的部分)。特别地,树形结构301生成将数据分成组块的指令,所述组块具有的大小被选择为使得可以同时处理数据的各部分而不必等待整个数据片在下一层级的处理可以开始之前完成一个层级的处理。用于给定组块的每个指令可以用路径名、偏移、和长度来定义组块。
例如,可以在固定的64K组块大小下实现解密,因此树形结构层301可以将数据分成64K块以进行解密。然而,可以在可变大小的组块中处理解压缩,因此,树形结构层可以将数据分成可变大小的组块以进行解压缩。
解压缩(去存档器(de-archiver)变换)过程可以接受可变大小的已压缩和解密的组块并将其解压缩成固定大小的未压缩块。树形结构层301或媒体过滤器层305可以被配置为确定已压缩和解密的数据的哪些可变大小组块解压缩成固定大小的组块而不必首先将其解压缩。为了促进加密组块的可变长度的确定,在分块时,媒体过滤器层305(最终确定哪些组块被创建)可以在RAM中存储其需要用来计算给定组块的大小和位置的任何信息。例如,对于FIOS psarc文件而言,去存档器层可以将psarc文件的目录表(TOC)保持在RAM中。TOC可以包含列出文件中的每个压缩块的大小的表格,并且去存档器媒体层可以由此得到块的位置。因此,有效地,去存档器能够将对未压缩数据块的传入请求转换成对相应压缩数据块的请求。去存档器为进行此变换需要的唯一信息是TOC,其已在RAM中。去存档器不需要实际读取任何数据或将其解压缩以创建树节点。
由于解密层的组块大小和解压缩层的组块大小不对齐,所以给定解密组块可能不是总是被立刻解压缩。作为替代,在可以开始将解压缩层组块解压缩之前,多于一个解密层组块可能需要被解密。然后,通过确定与每个层相关联的组块的位置并确定不同层的组块之间的数据依赖性来建立最优处理次序。这样,不是在后续处理层可以开始之前等待整个处理层完成,而是后续处理层可以在已处理了前一层中的必要数据组块时立即开始(例如,一旦必要的解密层组块已完成被解密,给定组块的解压缩就可以开始)。
有时候,I/O请求可能要求从多于一个的媒体/存储设备获取数据。因此,通过在执行之前确定数据依赖性,可以同时进行与来自多个媒体/存储设备的数据一起处理I/O请求,而不是使一个媒体/存储设备空闲、同时另一媒体/存储设备处理其I/O请求的一部分。举例来说,但不是以限制的方式,给定I/O请求可以要求从硬盘(HD)和蓝光媒体设备两者进行数据获取。通过略述用于给定I/O请求的数据依赖性,可以确定从HD确切地需要什么和从蓝光确切地需要什么。这样,当树形结构确定其可容许时,可以同时处理来自两个设备的数据,而不是在正在处理来自另一设备的数据的同时使一个设备空闲。
一旦已经创建树形结构313,则调度器303就可以将构成传入I/O请求的树形结构的指令***包含于存储器中的调度表中。该调度表内的给定指令的位置至少部分地取决于与树形结构313相关联的处理次序。
如果调度表中的两个或更多不同的I/O请求包含类似的树形结构313,则可以使这些I/O请求交错,使得可以同时处理多于一个的请求。这可以改善满足I/O请求的效率,因为可以同时地或以重叠的时间完成相关I/O请求,而不是等待每个I/O请求在下一个开始处理之前完成处理。例如,在某些实施例中,可以与树形结构313的指令执行并行地执行来自已与树形结构313的指令交错的其它I/O请求的一个或多个指令。
举例来说,但不以限制的方式,如果调度器303确定如果请求被交错则将更快地服务于该I/O请求,则I/O请求可以被交错。这可以用以下两个示例来举例说明。
根据第一示例,假设同时执行两次补丁(patch)读取。文件A需要五个组块:(A1) (A2) (P1) (A3) (P2)。文件B需要四个组块:(B1) (P3) (B2) (B3)。在这种情况下,“P”代表补丁文件,并且“A”和“B”是原始数据文件。磁盘上布局可以看起来像这样: 
... (A1) (A2) (A3) ... (B1) (B2) (B3) ............. (P1) (P2) ...
请注意,由于磁盘上的文件接近,所以调度器303可以确定以最小的查找完成两次读取的最快方式是通过首先读取A1~A3、然后是B1~B3、然后是P1~P3来使请求交错。
根据第二示例,假设调度器303已经调度第一读取请求并调度第二高优先级低等待时间读取请求(例如,音频请求)。如下表I所描绘的,FIOS 101可以从第一读取开始对组块进行操作。在表I中,组块随着时间的推移向左移动;其始于队列,移动至执行,并最后完全完成。
表I
Figure 304816DEST_PATH_IMAGE001
在已开始A3的执行之后,队列看起来如下表II所描绘的:
表II
Figure 235863DEST_PATH_IMAGE002
现在假设音频线程进入并突然想要加载负载(B1)和(B2)。如果音频读取器请求即时服务,则调度器303可以将(B1)和(B2)的读取放在队列的前面。现在,队列可以看起来如下表III所示: 
表III
Figure 927875DEST_PATH_IMAGE003
最后,当队列的此部分完成执行时,可以看到如表IV所示,I/O已被交错以用于两个读取请求。
表IV
Figure 664887DEST_PATH_IMAGE004
设备媒体层307(有时称为媒体访问层)可以被配置为对从上述媒体过滤器层305接收到的媒体请求进行响应,获取所请求的数据,然后向栈300返回其答复。
媒体过滤器层305可以包括补丁器(patcher)322、去存档器层308、RAM高速缓存层310、调度器高速缓存层312、覆盖层314、目录高速缓存层316、加密/解密层318、以及压缩/解压缩层320。这些媒体过滤器层305对应于与树形结构313相关联的处理层306。与I/O请求相关联的给定数据片可以根据与数据相关联的媒体过滤器层的数目而具有多个处理层。去存档器308可以用来促进从压缩档案提取特定资产文件。RAM高速缓存层310可以用来实现数据例如在主存储器中的高速缓存。调度器高速缓存312可以是简单的磁盘至磁盘高速缓存以用于临时存储来自诸如光盘之类的较慢源的数据。本文所使用的术语“调度器高度缓存”指的是更快访问媒体设备的存储媒体中的临时数据存储器。不需要预取调度器高速缓存312中的所有数据;某些可以按需取得并将其拷贝到高速缓存。举例来说,而非限制性地,调度器高速缓存层312可以利用快速存储媒体来提供此类临时存储。在其中快速存储媒体是硬盘驱动器(HDD)的特殊情况下,调度器高速缓存312有时称为HDD高速缓存。
可以将调度器高速缓存312保持为单个文件或多个文件。另外,调度器高速缓存312的内容不必是完整文件。可以通过删除某些单独文件以在不牺牲过多数据的情况下在需要时智能地释放磁盘空间来部分地刷新多文件高速缓存。相反,单文件高速缓存通常只能被截取(truncate)或完全删除。单文件高速缓存可以提供比多文件高速缓存更高的性能,因为多文件高速缓存通常要求附加的簿记工作(在主机文件***本身内部),这可能要求额外的I/O。
如下文所讨论的,覆盖层314可以用来允许文件***层级处的文件和目录的任意覆盖。目录高速缓存层316可以用来高速缓存用于处理器单元或单元处理器的O/S可能不适当地高速缓存(例如文件存在、大小、和位置)的数据。加密/解密层318可以用来促进用于传送的数据的加密或解密。压缩/解压缩层320可以用来促进用于传送的数据的压缩或解压缩。
参照下文描述的图4,可以理解FIOS程序101的树形结构层301和调度器303的操作。从客户端的角度出发,可以以相对简单的方式服务于I/O请求403。例如,诸如视频游戏之类的应用程序401内的线程402可以通过调用函数(例如readFile())经由FIOS程序101来请求I/O。该函数可以指定用于I/O请求403的优先级和应完成请求403的最后期限。然后,FIOS媒体栈300使用树形结构层301来创建用于I/O请求403的树形结构313,其形成定义用于该I/O请求403的最优处理次序的映射表。
树形结构最初定义与给定I/O请求403相关联的处理层级306。例如,给定I/O请求403可以要求从处理器向媒体设备传送数据,其中,需要对数据进行压缩、加密、和存档。在这种情况下,树形结构313将定义用于与I/O请求403相关联的数据的压缩、加密、和存档的处理的三个层级306。给定数据片必须在其被加密之前被压缩,在其被存档之前被加密,并在其最后被传送到媒体设备之前被存档。
然后,树形结构313根据处理层级306将要传送的数据分成组块302(例如,在压缩层级处将数据分成64K组块,在加密层级处将数据分成可变大小组块,并在存档层级处将数据分成64K组块)。数据被分成组块302,因此可以同时处理任何给定层级或不同层级处的数据部分,而不是必须在可以开始下一处理层级306之前等待请求中的所述数据完成一个处理层级306。由于一个处理层级306的组块302不一定与另一处理层级306的组块302对齐,所以必须映射与不同处理层级306相对应的组块302的数据依赖性304以便使I/O请求403的处理成流线型。例如,给定压缩层级组块可能不是总是在压缩已完成时立即开始加密。由于在可变大小下处理加密层级,所以可能在加密层级组块可以开始加密之前必须对两个或更多压缩层级组块进行压缩。因此,树形结构313有必要确定这些数据依赖性304以优化给定I/O请求403的处理。此外,当I/O请求要求从多个媒体/存储设备获取数据时,在树形结构313中概述的数据依赖性304可以允许来自不同媒体/存储设备的数据的同时处理,而不是在另一媒体/存储设备空闲的同时使来自一个媒体/存储设备的数据被处理。
与树形结构313相关联的最终产物是定义用于给定I/O请求403的最优处理次序的映射表。与I/O请求的调度表的优化无关,每个I/O请求403被树形结构313单独地优化,以便其可以在可能的最短时间量内完成。此I/O请求403及其相关联树形结构313然后被馈送给调度器303以进行高效调度。
重要的是应注意与I/O请求相关联的数据可以具有比上述的两个更多的处理层。树形结构实际上不服务于I/O请求,而是仅创建如何可以最优地服务于单独I/O请求的映射表。
举例来说,但非限制性地,可以将I/O请求分成树形结构,其中,由相应的指令来处理在处理该请求时的每个层处的每个数据组块。树形结构的一个层内的给定指令可以具有相关联的数据依赖性,其指示在该给定指令可以开始执行之前必须完成的来自前一层的一个或多个指令。
表V提供用于I/O请求的树形结构的示例。在表I中,每个指令使用由路径名、偏移和以千字节(KiB)为单位的长度标识的数据。在本示例中,树形结构内的层的处理次序是从下至上。然而,可以并行地执行树形结构内的指令,从而满足数据依赖性。在表V中,用于给定指令的依赖性指示在给定指令可以开始执行之前必须从下面的层完成哪个(哪些)其它指令。在本示例中,以/dev_开头的路径名指的是媒体设备。具体而言,/dev_hdd0和/dev_hdd1指的是硬盘驱动器且/dev_bdvd0指的是高清晰度数字视频驱动器(DVD)。不以/dev_开头的路径名指的是由其它指令所获取的数据组成的虚拟文件。
表V
Figure 125956DEST_PATH_IMAGE005
Figure 233644DEST_PATH_IMAGE007
在表V所呈现的示例中,I/O请求是用于来自DVD的文件。按照“自下而上”次序执行本示例中的树形结构内的各个层。到这时,意味着由于数据依赖性,最初必须执行最低层中的至少某些指令。本文所使用的术语“最低层”指的是结构的不存在前一(或较低)层的层。通过没有前一(或较低)层,意味着最低层中没有指令具有要求不同层中的指令的在先执行完成的数据依赖性。然而,最低层中的一个或多个指令可以具有要求最低层中的其它指令的在先执行完成的数据依赖性是可能的。在上文针对表I所描述的示例中,最低层是HDD高速缓存层。表V中的指令的确切服务次序在某种程度上取决于HDD高速缓存层中的指令内的数据依赖性。举例来说,可以按照设备/分区将来自表V的HDD高速缓存层中的最终I/O请求排序成下表VI所示的执行次序。
表VI
Figure 446450DEST_PATH_IMAGE008
表VI中的指令全部可以被并行地发布,除具有被标记(*)的依赖性的那些之外,其可以被调度器303排序和分派。具体而言,由于索引写指令94且读指令77、79、81、83、85、87、89、91、和93不具有任何数据依赖性,所以可以并行地且按照任何次序来执行这些指令。写指令78、80、82、84、86、88、90、和92分别取决于初始索引写指令94和读指令77、79、81、83、85、87、89、91、和93。因此,这些写指令中的每一个必须等待,直至已执行索引写94和相应的读指令为止。
可以在满足数据依赖性的程度内并行地执行以上表I所述的树形结构中的其余指令。重要的是注意,通过在接收到I/O请求之后立即创建的树形结构中包括数据依赖性,可以在已满足对该指令的数据依赖性要求时,立即执行树形结构的给定层中的每个指令。因此,可以并行地执行用于两个不同层的指令,只要已满足用于每个指令的数据依赖性即可。因此,一个层中的指令不需要等待下面的层中的所有指令的完成。
例如,为了执行I/O请求指令0,必须首先完成补丁器指令1、2、3、4。在可以执行补丁器程序指令4之前,仅必须完成去存档器指令12和20~25。在可以执行去存档器指令25之前,仅必须完成解压缩指令46。在解压缩指令46可以开始之前,仅必须完成ram高速缓存指令55。在ram高速缓存指令55可以开始之前,仅必须完成解密指令64。在解密指令64可以开始之前,仅必须完成覆盖指令73。在覆盖指令73可以开始之前,仅必须完成HDD高速缓存指令97。
一旦I/O请求403已通过树形结构层301,并且已确定用于该特定I/O请求的处理次序,I/O请求403就被调度器303移动至传入队列404。举例来说,传入队列404可以是先进先出(FIFO)队列,其中,被置于队列404中的第一请求是被调度器303调度的第一请求。可以用原子操作来实现将请求403***传入队列404中以防止线程在请求异步I/O时被阻止。在某些实施例中,传入队列404可以采取原子栈的形式,可以用具有原子交换的辅助处理器105B来填充所述原子栈。
举例来说,而非限制性地,如果I/O请求403是读操作,则客户端应用程序401可以供应缓冲器405以接收从媒体设备获取的数据。当I/O请求403完成时,客户端应用程序401可以从其供应的缓冲器405读取所获取的数据。当客户端完成处理I/O请求403时,客户端可以将缓冲器405解除分配,以便其资源可供未来I/O使用。
如果调度器303尚未被激活,则I/O请求403可以激活调度器303。然后,应用程序401可以等待I/O请求403完成。例如,客户端应用程序401可以使用原子方法(例如,isDone())周期性地进行轮询。可替换地,客户端可以等待FIOS程序101在I/O请求403完成时调用的回调函数。
在I/O请求403已被***到传入队列404中之后,FIOS程序101可以调用调度器303以执行调度***407。可以参照图5来理解由调度器303实现的操作序列。如果不存在要处理的I/O,如在502处所指示的,调度器303可以睡眠(即保持不活动)。当新的I/O请求403进入所述传入队列404时,调度器303唤醒以对其进行处理。一旦调度器303唤醒(或已经唤醒),其就注意到传入队列404中的新请求403并且其将该请求移动到调度队列406中的适当位置。
为了确定I/O请求403的队列位置,如503处所指示的,调度器303可以可选地例如通过询问设备媒体层307或FIOS媒体栈300中的另一层来确定媒体设备的当前状态。状态数据可以根据由FIOS媒体栈300处理的媒体设备的类型或存在于栈300中的各种层而变。示例包括最近被访问的逻辑块地址(LBA)、RAM高速缓存的最后被访问的路径和偏移、当前磁盘层、头位置、流式传输模式、以及非流式传输模式。
根据本发明的实施例,调度器303可以基于媒体设备性能模型303A。不同于现有的I/O调度器,驱动模型303A可以在确定请求403的最优调度时将关于媒体设备118的性能的数据考虑在内。可以将使用驱动模型来调度I/O请求403与在生成CD时的控制过程(mastering process)的颠倒相比较。可以将性能模型303A配置为将诸如开销、磁盘移动时间、读取时间等之类的因素考虑在内。性能模型303A可以任意地对媒体设备118的复杂特性进行建模,所述复杂特性诸如为吞吐量、激光器摆动、读取头移动、层变化、和请求开销。性能模型303A还可以将在I/O请求中涉及的媒体设备118读取或写入的特定媒体的其它参数考虑在内。例如,性能模型303A可以考虑设备是否正在从单层盘或多层盘读取,所述多层盘例如为双层盘,诸如蓝光DMD。
如504处所指示的,调度器303还可以可选地检查新I/O请求的定时要求(例如最后期限)和优先级。如506处所指示的,调度器还可以可选地被配置为将传入队列404中的I/O请求与调度队列406中的I/O请求相比较以便进行交错。由传入队列404中的给定I/O请求的树形结构313概述的数据依赖性304可以与由已在调度队列406中的一个或多个I/O请求的树形结构313概述的数据依赖性304具有重叠。例如,传入队列404中的I/O请求可能需要从给定媒体设备读取数据组块且调度队列406中的I/O请求可能需要从相同媒体设备读取相邻的数据组块。因此,通过使这两个I/O请求交错,可以提高处理那些I/O请求的效率。可以通过设置两个给定树形结构313之间的阈值重叠值并在满足该阈值重叠值时使与那些树形结构313相关联的两个I/O请求交错来进行所述交错。如果使两个或更多I/O请求交错,则调度器可以在调度期间将这些交错的请求作为单个请求来处理。
一旦确定是否任何I/O请求可以被交错,如在507处所指示的,调度器303就可以确定用于当前I/O请求的最优队列位置。调度器303可以通过将传入I/O请求置于调度队列的任意位置上来开始。然后使用此试验调度序列来确定完成整个调度表所需的总时间、以及优先级考虑、和最后期限约束。如507处所指示的,可以用不同的队列次序反复地重复此过程,直至确定最佳调度队列次序为止。请注意,可以按照调度次序根据前一请求的最终状态来确定用于请求403的初始状态,并且可以根据请求403的最终状态来确定按调度次序的下一个请求的初始状态。
调度器303可以遍历调度队列中的请求,对照已在队列中的那些请求来比较请求403的特性。调度器303可以在队列中的每个可能位置处尝试请求403,寻找优先级超越(override)、遗漏的最后期限、和定时考虑。调度器303可以通过寻找无被请求的I/O操作错过其最后期限的次序来确定最佳的可能新队列次序。如果一个或多个请求必定错过其最后期限,则调度器可以使用不同的标准来确定队列次序。可能影响调度队列406中的请求排序的附加标准可以包括(但不限于)I/O请求优先级、流缓冲器状态、等待时间要求、和不同I/O请求的树形结构之间的重叠数据依赖性。
在一些实施例中,例如如果不是所有的最后期限都能得到解决,则可以使用优先级。例如,如果将不可避免地错过某些最后期限,则最佳的队列次序可以是最低可能优先级请求错过其最后期限的次序。如果存在适合上述考虑的多个可能队列次序,则具有数目最少的同等优先级的错过最后期限的请求的队列次序可以是最优次序。如果存在所有的前述考虑都相同的多个可能队列次序,则执行整个队列的最低可能时间的队列次序可以是最佳次序。在某些情况下,可以在高优先级请求之前调度低优先级请求,只要该高优先级请求能够满足其最后期限即可。
如果存在所有的前述考虑都相同的多个可能队列次序,则其中调度队列406中的最新请求转到队列末端的次序可以是最佳次序。
一旦调度器303已确定用于实现请求403的调度队列406中的最佳位置,如图4中的407和图5中的508处所指示的,就可以将该请求***其中。再次参照图4,如果存在可用于执行I/O请求的资源,则如409处所指示的,调度器303可以将调度队列406中的第一请求移动至发布队列408。然后可以从发布队列408执行该请求。为了执行给定I/O请求403,调度器303可以将请求403以及与给定请求403相关联的树形结构313下传至FIOS媒体栈300中的第一层。
调度器303下面的每个层可以看到由上面的层向其传递的I/O请求403和相应的树形结构。如果适当,一个层可以处理与请求相关联的数据组块304。每个层根据与请求403相关联的树形结构313来处理请求403,使得以可能的最高效方式来处理该请求。举例来说,但非限制性地,如果该请求是读操作,则去存档器层308可以针对开放档案的内容来检查所提供的路径名,并且如果找到该文件,则可以将该请求重新映射成压缩数据的读取。FIOS媒体栈300的每层将已处理或未处理I/O请求传递至下一个较低层,直至该请求最后到达硬件层310为止。当硬件层310对该请求进行响应时,该响应自下而上经历媒体栈300中的每个层,并且如果适当的话,每个层可以处理已获取的数据块302。例如,解压缩层可以知道返回的数据块302必须被解压缩,因此在向栈300返回响应之前将其解压缩。该响应最后返回到调度器303。
当所获取的数据回到栈300时,调度器303可以接收它并随后将I/O请求403移动至已完成队列410,这可以触发到应用程序401的回调函数411(如果该回调由该应用程序设置的话)。可替换地,应用程序401可以对FIOS栈300进行轮询以确定I/O请求403是否已完成。一旦I/O请求403已完成,就可以将其移动至自由I/O库412。自由I/O库412可以包含不在使用中的一组I/O请求。此类请求可以包括从未被分配给客户端应用程序401的那些或已被客户端应用程序401使用并随后被释放以供再次使用的那些。当客户端应用程序401做出I/O请求403时,调度器303可以从此库412向客户端分配I/O请求。自由I/O库412可以被实现为栈。自由I/O请求可以被从自由I/O库412弹出并推到传入队列404上。以这种方式,可以重复使用自由I/O请求。
根据本发明的实施例,调度器303可以在调度环路中进行操作,如下:
1. 检查I/O完成 
2. 发布新I/O请求 
3. 发布I/O回调(如果有的话) 
4. ***到调度表(从传入的调度***) 
5. 再次新发布
6. 检查预测的被错过的最后期限
7. 返回1。
用于每次迭代的调度***的数目可以局限于某个最大数目,例如十六个***。
在本发明的某些实施例中,辅助处理器单元105B(例如,SPE 206)可以通过经由相对于主处理器105A或PPE 204而言原子的交换向传入队列404添加对传入I/O的请求来自己请求I/O。例如,在常规单元处理器实现中,SPE 206可能不具有任何I/O设施。然而,如果传入队列404是公共数据元素,则辅助处理器105B可以通过与主处理器105A的标准原子交换向队列添加I/O请求并用信号通知主处理器105A。
在许多现有技术实现中,如果辅助处理器105B需要用于即时处理的数据,则该数据必须在主存储器中。相反,用本发明的实施例,辅助处理器105B可以触发FIOS媒体栈300从硬媒体设备118、乃至通过网络127获得所需的数据。
举例来说,但非限制性地,传入队列404、已完成队列410和自由I/O库412可以是原子栈。辅助处理器105B可以从自由I/O库412弹出I/O请求,填写用于I/O请求的路径,将该请求推回到传入队列404并随后执行同步且唤醒调度器302。辅助处理器105B可以在间歇地对I/O请求的完成进行轮询的同时进行其它工作。
举例来说,在单元处理器***200中,可以由SPE 206对I/O请求进行服务。SPE 206所请求的数据可以被发送到可被PPE 204寻址的任何位置。如果SPE 206被锁定,则FIOS媒体栈300可以将数据直接写入SPE 206的本地存储装置(LS)。在某些实施例中,一个SPE 206可以请求解压缩层用另一SPE进行解压缩。这可以例如使用处理器之间的远程程序调用(RPC)来实现。在本示例中,SPE 206要求PPE 204为其做某件事。在更常规的RPC中,其为相反的方式。
在某些实施例中,可以使用调度器高速缓存层312(例如HDD高速缓存)来将文件从媒体设备118预取到存储设备115中的高速缓存117,以便可以在稍后快速地读取该文件。在这种情况下,可以将预取操作413直接***发布队列408中。该预取可以是已被许多类型的高速缓存实现的标准手动预取,诸如PowerPC CPU架构中的“dcbt”指令。根据本发明的实施例,可以将该预取排队并作为上述调度器环路的一部分执行。预取可以促进对必须在实现其它I/O请求的同时被访问的具有相对高的等待时间和低吞吐量的相对慢的源媒体(例如,蓝光和UMO)的工作。
调度器302可以被配置为在相对低的优先级实现此类预取,以便其仅在媒体设备118原本将空闲的未使用时刻中运行,并且将不会与其它I/O请求相干扰。例如,***100可以具有慢媒体设备118(例如,诸如蓝光盘(BD)驱动器之类的光盘)和较快存储设备115,诸如硬盘驱动器。调度器高速缓存层305可以用来异步地将文件从光盘驱动器拷贝到硬盘。当在稍后访问该文件时,其将被以较高的HDD速度(例如,20MiB/s)而不是较慢的光盘速度(例如,8MiB/s)读取。
虽然通常进行到硬盘高速缓存的高速缓存预取,但还可以进行到主存储器106、202的预取。可以按照在调度完成之后接收到预取请求的次序在调度队列406的末端处包括所述预取请求。在某些实施例中,可以在必要时延迟预取请求。预取请求不是以与其它I/O请求403相同的方式被调度。预取请求被保持在仅在调度队列406为空时被服务于的单独预取队列413中。必要时,可以延迟预取请求。否则,可以按照接收到预取的次序将其完成。调度器303可以保持预取请求排队并仅在I/O子***已经空闲达到指定时间长度时执行所述预取请求。这防止预取请求与正常I/O请求相干扰。另外,预取还不局限于单个高速缓存块,其可以是任何大小,或者甚至传递告知高速缓存从头到尾加载整个文件的特殊“整个文件”值。此外,虽然预取可以是任何大小,但可以将预取实现为使得在返回调度器303之前填充不超过一个高速缓存块以检查FIOS媒体栈300继续是空闲。
高速缓存预取可以在诸如视频游戏之类的I/O驱动的应用程序中和诸如现代视频游戏机的具有特定I/O需要的平台上提供改善的I/O性能。特别地,游戏数据常常被存储在诸如光学媒体或网络文件服务器之类的慢媒体上,但是游戏可以访问类似于HDD的快速本地储存器。
本发明的实施例提供利用大量I/O的应用程序和***中的改进的I/O性能。如上文所讨论的,本发明的实施例在视频游戏应用程序和视频游戏***中特别有用。然而,本发明的实施例不限于此类应用程序和***。
上述实施例的其它变更在本发明的实施例的范围内。例如,在某些实现中,可以通过使用在运行时间应用的二进制差值(二进制diff)补丁来实现由补丁器层322进行的文件打补丁。举例来说,可以将二进制diff补丁119存储在存储设备115中并在运行时间应用于相关文件。
传统上,已通过遵循来自可以通过网络下载的差值文件的可执行指令来创建整个新文件而应用补丁。这些指令可以指示哪些字节将被从文件去除和哪些字节将被添加到文件。存储在存储设备115中的二进制diff补丁119可以包括此类指令。传统上,可以脱机地、即不在运行时间进行打补丁。在典型的传统补丁中,整个原始文件被从存储设备读取到存储器中。差值补丁被应用于文件以生成新文件,该新文件然后被写回到存储设备。理想是使要下载的补丁的大小最小化。
当由300波特或1200波特调制解调器来执行下载时产生diff补丁。那时,重要的是减小下载的大小。随着因特网的发展,较高的下载速度已变得更加广泛可用。因此,一般惯例是在不使用diff补丁的情况下仅仅通过网络来传输整个文件且将其下载到存储设备115。这种方法虽然有些拙劣,然而却是有效的。
然而,在许多应用程序中,特别是视频游戏,常常需要对非常大的文件进行打补丁。由于必须将整个文件下载到存储器中以便应用补丁,所以对于非常大的文件而言,diff打补丁可能会很慢。例如,从储存器将1 Gig文件读取到存储器中可能甚至在应用补丁之前花费一分钟以上。
打补丁的两种现有技术方法都可能呈现出由于带宽成本而引起的问题。该问题在要下载的替换文件占用存储设备115中可用的空间的相当一部分的情况下尤其严重。例如,下载500兆字节的已打补丁文件可以占用20千兆字节硬盘驱动器的相当一部分。
此外,可能出现其中多个非常大的文件要求很少量数据的替换的情况。例如,应用程序可能具有在每个文件的开头处的16字节ID中具有bug的多个文件。然而,由于打补丁仅在文件大小水平上起作用,所以通过文件替换来应用补丁将意味着下载并替换应用程序中的每一个文件。如果文件总计达几千兆字节的数据,那么这是不切实际的。即使用传统diff补丁对文件打补丁,也将必须拷贝所有文件以便应用补丁。
为了克服这些问题,可以以传统方式生成并下载二进制diff补丁。然而,作为脱机地应用补丁的替代,可以在运行时间应用补丁,例如作为在执行应用程序的同时服务于来自应用程序的I/O请求的一部分。应注意的是为了在运行时间实现此类二进制diff补丁,上述即时分块虽然是有利的,但并不是必需的。
可以在树形结构中的相对早期的阶段应用补丁。例如,传入I/O请求的初步处理的一部分可以涉及检查补丁表以确定是否存在用于在请求中列出的任何文件的diff补丁。这类似于上述去存档器TOC查找。可以被存储在RAM中的补丁表包含FIOS 101所需的信息以便确定如何和在哪里应用补丁。
虽然上文是本发明的优选实施例的完整说明,但可以使用各种替换、修改和等价物。因此,不应参照以上说明来确定本发明的范围,相反,而是应参照随附权利要求以及其等价物的整个范围来确定本发明的范围。可以将优选或不优选的任何特征与优选或不优选的任何其它特征组合。在随后的权利要求中,不定冠词“一个”或“一”指的是该冠词之后的一个或多个项目的量,除非另外明确说明。不应将未明确说明用于执行指定功能的“用于…的装置”的权利要求中的任何元素解释为如35 USC § 112, ? 6中指定的“装置”或“步骤”条款。特别地,这里的权利要求中的“...的步骤”的使用并不意图调用35 USC § 112, ? 6的规定。
虽然已参照本发明的某些优选型式非常详细地描述了本发明,但可以有其它型式。因此,随附权利要求的精神和范围不应局限于本文所包含的优选型式的说明。
读者的注意力应指向与本说明书同时提交且与本说明书一起公开于公众查阅的所有论文和文献,并且所有此列论文和文献的内容通过引用结合到本文中。
可以用服务于相同、等效或类似目的的替换特征来代替在本说明书中公开的所有特征(包括任何随附权利要求、摘要和附图),除非另外明确地说明。因此,除非另外明确地说明,所公开的每个特征仅仅是一系列的一般等价或类似特征的一个示例。

Claims (16)

1.在具有处理器单元、存储器、和一个或多个媒体/存储设备的***中,一种用于处理到或来自所述一个或多个媒体/存储设备的输入或输出(I/O)的方法,包括:
a) 从在所述处理器上运行的应用程序接收传入I/O请求以向所述一个或多个媒体/存储设备传送数据或从所述一个或多个媒体/存储设备接收数据;
b) 创建包括能被所述处理器执行且包含于存储器中的指令的树形结构,该树形结构定义与所述I/O请求相关联的一个或多个处理层,其中,所述指令在所述一个或多个处理层中的每一个处将所述I/O请求中的数据划分成一个或多个组块,其中,所述一个或多个层处的每个指令具有对前一层中的一个或多个相应指令的相关联数据依赖性,其中,给定指令的数据依赖性允许所述给定指令仅在所述前一层中的相应一个或多个依赖的指令的执行之后执行;
c) 通过确定每个组块的位置和不同处理层的组块之间的数据依赖性将所述树形结构中的指令排序成处理次序;以及
d) 将一个或多个指令***包含于所述存储器中的调度表中,其中,所述一个或多个指令在所述调度表内的位置至少部分地取决于所述处理次序。
2.权利要求1的方法,其中,与特定处理层相关联的组块具有不同于与另一处理层相关联的组块的大小。
3.权利要求1的方法,其中,所述树形结构包括最低层,其中,所述最低层的一个或多个指令具有对所述最低层中的不同指令的相关联数据依赖性,其中,最低层中的给定指令的数据依赖性允许所述给定指令仅在执行最低层中的相应一个或多个依赖的指令之后执行。
4.权利要求1的方法,其中,所述一个或多个处理层包括去存档或存档层。
5.权利要求1的方法,其中,所述一个或多个处理层包括解密或加密层。
6.权利要求1的方法,其中,所述一个或多个处理层包括解压缩或压缩层。
7.权利要求1的方法,其中,在d)中将传入I/O请求***所述调度表内还取决于与I/O请求相关联的优先级约束。
8.权利要求1的方法,其中,在d)中将传入I/O请求***所述调度表内还取决于与I/O请求相关联的最后期限约束。
9.一种用于处理输入/输出(I/O)的***,包括:
处理器单元;
存储器,其被耦合到所述处理器单元;
一个或多个媒体/存储设备,其耦合到所述处理器单元;以及
包含于所述存储器中的一组处理器可执行指令,所述指令被配置为在被执行时实现用于处理到或来自所述一个或多个媒体/存储设备的输入或输出(I/O)的方法,该方法包括:
a) 从在所述处理器上运行的应用程序接收传入I/O请求以向所述一个或多个媒体/存储设备传送数据或从所述一个或多个媒体/存储设备接收数据;
b) 创建包括能被所述处理器执行且包含于存储器中的指令的树形结构,该树形结构定义与所述I/O请求相关联的一个或多个处理层,其中,所述指令在所述一个或多个处理层中的每一个处将所述I/O请求中的数据划分成一个或多个组块,其中,所述一个或多个层处的每个指令具有对前一层中的一个或多个相应指令的相关联数据依赖性,其中,给定指令的数据依赖性允许所述给定指令仅在所述前一层中的相应一个或多个依赖的指令的执行之后执行;
c) 通过确定每个组块的位置和不同处理层的组块之间的数据依赖性将所述树形结构中的指令排序成处理次序;以及
d) 将一个或多个指令***包含于所述存储器中的调度表中,其中,所述一个或多个指令在所述调度表内的位置至少部分地取决于所述处理次序。
10.权利要求9的***,其中,与特定处理层相关联的组块具有不同于与另一处理层相关联的组块的大小。
11.权利要求9的***,其中,所述树形结构包括最低层,其中,所述最低层的一个或多个指令具有对所述最低层中的不同指令的相关联数据依赖性,其中,最低层中的给定指令的数据依赖性允许所述给定指令仅在执行最低层中的相应一个或多个依赖的指令之后执行。
12.权利要求9的***,其中,所述一个或多个处理层包括去存档/存档层。
13.权利要求9的***,其中,所述一个或多个处理层包括解密/加密层。
14.权利要求9的***,其中,所述一个或多个处理层包括解压缩/压缩层。
15.权利要求9的***,其中,在d)中将传入I/O请求***所述调度表内还取决于与I/O请求相关联的优先级约束。
16.权利要求9的***,其中,在d)中将传入I/O请求***所述调度表内还取决于与I/O请求相关联的最后期限约束。
CN201210502675.7A 2009-10-26 2010-10-14 使用即时数据分块的文件输入/输出调度 Active CN103123595B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US25501309P 2009-10-26 2009-10-26
US61/255,013 2009-10-26
US61/255013 2009-10-26
US12/902,768 US8412856B2 (en) 2009-10-26 2010-10-12 File input/output scheduler using immediate data chunking
US12/902,768 2010-10-12
US12/902768 2010-10-12
CN201080001671.XA CN102171647B (zh) 2009-10-26 2010-10-14 使用即时数据分块的文件输入/输出调度

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201080001671.XA Division CN102171647B (zh) 2009-10-26 2010-10-14 使用即时数据分块的文件输入/输出调度

Publications (2)

Publication Number Publication Date
CN103123595A true CN103123595A (zh) 2013-05-29
CN103123595B CN103123595B (zh) 2016-03-02

Family

ID=43899281

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201080001671.XA Active CN102171647B (zh) 2009-10-26 2010-10-14 使用即时数据分块的文件输入/输出调度
CN201210502675.7A Active CN103123595B (zh) 2009-10-26 2010-10-14 使用即时数据分块的文件输入/输出调度

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201080001671.XA Active CN102171647B (zh) 2009-10-26 2010-10-14 使用即时数据分块的文件输入/输出调度

Country Status (7)

Country Link
US (1) US8412856B2 (zh)
EP (1) EP2353079B1 (zh)
JP (1) JP5292473B2 (zh)
KR (1) KR101188472B1 (zh)
CN (2) CN102171647B (zh)
BR (1) BRPI1001274B1 (zh)
WO (1) WO2011053463A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107239328A (zh) * 2016-03-29 2017-10-10 上海普兰金融服务有限公司 任务分配方法及装置
CN111399912A (zh) * 2020-03-26 2020-07-10 超验信息科技(长沙)有限公司 一种面向多周期指令的指令调度方法、***及介质
CN114706798A (zh) * 2022-06-08 2022-07-05 四川省人工智能研究院(宜宾) 基于注意力机制的固态硬盘数据预取方法

Families Citing this family (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9838450B2 (en) * 2010-06-30 2017-12-05 Brightcove, Inc. Dynamic chunking for delivery instances
US9378560B2 (en) * 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US8909764B2 (en) * 2011-07-28 2014-12-09 Xyratex Technology Limited Data communication method and apparatus
CA2847532A1 (en) * 2011-09-02 2013-03-07 Vu LAM Systems and methods for processing software application metadata associated with a software application
US8712963B1 (en) 2011-12-22 2014-04-29 Emc Corporation Method and apparatus for content-aware resizing of data chunks for replication
US8639669B1 (en) * 2011-12-22 2014-01-28 Emc Corporation Method and apparatus for determining optimal chunk sizes of a deduplicated storage system
US20150046482A1 (en) * 2012-03-15 2015-02-12 Lei Wang Two-level chunking for data analytics
CN102707966B (zh) * 2012-04-12 2014-09-03 腾讯科技(深圳)有限公司 加速操作***启动的方法及装置、预取信息生成方法及装置和终端
US9703482B2 (en) * 2012-06-29 2017-07-11 Vmware, Inc. Filter appliance for object-based storage system
US10127081B2 (en) * 2012-08-30 2018-11-13 International Business Machines Corporation Efficient resource management in a virtualized computing environment
CN103729142B (zh) * 2012-10-10 2016-12-21 华为技术有限公司 内存数据的推送方法及装置
US10251194B2 (en) * 2013-06-17 2019-04-02 Nxp Usa, Inc. Efficient scheduling in asynchronous contention-based system
US9819766B1 (en) 2014-07-30 2017-11-14 Google Llc System and method for improving infrastructure to infrastructure communications
US9323556B2 (en) 2014-09-30 2016-04-26 Amazon Technologies, Inc. Programmatic event detection and message generation for requests to execute program code
US10048974B1 (en) 2014-09-30 2018-08-14 Amazon Technologies, Inc. Message-based computation request scheduling
US9715402B2 (en) 2014-09-30 2017-07-25 Amazon Technologies, Inc. Dynamic code deployment and versioning
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9830193B1 (en) 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9537788B2 (en) 2014-12-05 2017-01-03 Amazon Technologies, Inc. Automatic determination of resource sizing
US9524249B2 (en) * 2014-12-23 2016-12-20 Intel Corporation Memory encryption engine integration
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
CN104699466B (zh) * 2015-03-26 2017-07-18 中国人民解放军国防科学技术大学 一种面向vliw体系结构的多元启发式指令选择方法
US9930103B2 (en) 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
US9785476B2 (en) 2015-04-08 2017-10-10 Amazon Technologies, Inc. Endpoint management system and virtual compute system
US10462218B1 (en) 2015-07-15 2019-10-29 Google Llc System and method for sending proposals within a distributed state machine replication system
US10754701B1 (en) 2015-12-16 2020-08-25 Amazon Technologies, Inc. Executing user-defined code in response to determining that resources expected to be utilized comply with resource restrictions
US9811434B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US10067801B1 (en) 2015-12-21 2018-09-04 Amazon Technologies, Inc. Acquisition and maintenance of compute capacity
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
US10891145B2 (en) 2016-03-30 2021-01-12 Amazon Technologies, Inc. Processing pre-existing data sets at an on demand code execution environment
US10282229B2 (en) * 2016-06-28 2019-05-07 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US10277708B2 (en) 2016-06-30 2019-04-30 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10203990B2 (en) 2016-06-30 2019-02-12 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10884787B1 (en) 2016-09-23 2021-01-05 Amazon Technologies, Inc. Execution guarantees in an on-demand network code execution system
US10061613B1 (en) 2016-09-23 2018-08-28 Amazon Technologies, Inc. Idempotent task execution in on-demand network code execution systems
US11119813B1 (en) 2016-09-30 2021-09-14 Amazon Technologies, Inc. Mapreduce implementation using an on-demand network code execution system
US10564946B1 (en) 2017-12-13 2020-02-18 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10831898B1 (en) 2018-02-05 2020-11-10 Amazon Technologies, Inc. Detecting privilege escalations in code including cross-service calls
US10733085B1 (en) 2018-02-05 2020-08-04 Amazon Technologies, Inc. Detecting impedance mismatches due to cross-service calls
US10353678B1 (en) 2018-02-05 2019-07-16 Amazon Technologies, Inc. Detecting code characteristic alterations due to cross-service calls
US10725752B1 (en) 2018-02-13 2020-07-28 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10776091B1 (en) 2018-02-26 2020-09-15 Amazon Technologies, Inc. Logging endpoint in an on-demand code execution system
US10817331B2 (en) 2018-06-25 2020-10-27 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US10649749B1 (en) 2018-06-26 2020-05-12 Amazon Technologies, Inc. Cross-environment application of tracing information for improved code execution
US11146569B1 (en) 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US10949237B2 (en) 2018-06-29 2021-03-16 Amazon Technologies, Inc. Operating system customization in an on-demand network code execution system
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
CN110928575B (zh) * 2018-09-20 2022-04-29 上海登临科技有限公司 一种多设备同步控制***和控制方法
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US10884812B2 (en) 2018-12-13 2021-01-05 Amazon Technologies, Inc. Performance-based hardware emulation in an on-demand network code execution system
CN111526172B (zh) * 2019-02-03 2022-11-29 杭州登临瀚海科技有限公司 一种多设备管理方法和管理***
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11115404B2 (en) 2019-06-28 2021-09-07 Amazon Technologies, Inc. Facilitating service connections in serverless code executions
US11106477B2 (en) 2019-09-27 2021-08-31 Amazon Technologies, Inc. Execution of owner-specified code during input/output path to object storage service
US11386230B2 (en) 2019-09-27 2022-07-12 Amazon Technologies, Inc. On-demand code obfuscation of data in input path of object storage service
US11550944B2 (en) 2019-09-27 2023-01-10 Amazon Technologies, Inc. Code execution environment customization system for object storage service
US10908927B1 (en) 2019-09-27 2021-02-02 Amazon Technologies, Inc. On-demand execution of object filter code in output path of object storage service
US11055112B2 (en) 2019-09-27 2021-07-06 Amazon Technologies, Inc. Inserting executions of owner-specified code into input/output path of object storage service
US11360948B2 (en) 2019-09-27 2022-06-14 Amazon Technologies, Inc. Inserting owner-specified data processing pipelines into input/output path of object storage service
US11394761B1 (en) 2019-09-27 2022-07-19 Amazon Technologies, Inc. Execution of user-submitted code on a stream of data
US11656892B1 (en) 2019-09-27 2023-05-23 Amazon Technologies, Inc. Sequential execution of user-submitted code and native functions
US11023416B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. Data access control system for object storage service based on owner-defined code
US11263220B2 (en) 2019-09-27 2022-03-01 Amazon Technologies, Inc. On-demand execution of object transformation code in output path of object storage service
US11250007B1 (en) 2019-09-27 2022-02-15 Amazon Technologies, Inc. On-demand execution of object combination code in output path of object storage service
US11023311B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. On-demand code execution in input path of data uploaded to storage service in multiple data portions
US11416628B2 (en) 2019-09-27 2022-08-16 Amazon Technologies, Inc. User-specific data manipulation system for object storage service based on user-submitted code
US10996961B2 (en) 2019-09-27 2021-05-04 Amazon Technologies, Inc. On-demand indexing of data in input path of object storage service
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
US10942795B1 (en) 2019-11-27 2021-03-09 Amazon Technologies, Inc. Serverless call distribution to utilize reserved capacity without inhibiting scaling
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11188391B1 (en) 2020-03-11 2021-11-30 Amazon Technologies, Inc. Allocating resources to on-demand code executions under scarcity conditions
US11775640B1 (en) 2020-03-30 2023-10-03 Amazon Technologies, Inc. Resource utilization-based malicious task detection in an on-demand code execution system
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US11706221B1 (en) * 2021-05-25 2023-07-18 Two Six Labs, LLC Unidirectional atomic messaging
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system
US11968280B1 (en) 2021-11-24 2024-04-23 Amazon Technologies, Inc. Controlling ingestion of streaming data to serverless function executions
US12015603B2 (en) 2021-12-10 2024-06-18 Amazon Technologies, Inc. Multi-tenant mode for serverless code execution

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050108414A1 (en) * 2003-11-14 2005-05-19 Taylor Thomas M. System and method for transmitting data in computer systems using virtual streaming
US20060136570A1 (en) * 2003-06-10 2006-06-22 Pandya Ashish A Runtime adaptable search processor
US7069555B1 (en) * 2000-09-29 2006-06-27 Microsoft Corporation Super-region instruction scheduling and code generation for merging identical instruction into the ready-to-schedule instruction
US20070150624A1 (en) * 2005-11-04 2007-06-28 Sun Microsystems, Inc. Pipelined I/O execution
US7519744B2 (en) * 2004-05-07 2009-04-14 Hitachi, Ltd. Method and apparatus for managing I/O paths on a storage network using priority

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6549918B1 (en) * 1998-09-21 2003-04-15 Microsoft Corporation Dynamic information format conversion
JP3733784B2 (ja) * 1999-05-21 2006-01-11 株式会社日立製作所 パケット中継装置
JP2000357099A (ja) * 1999-06-15 2000-12-26 Hitachi Ltd ディスク入出力方法
US6804710B1 (en) * 2000-03-10 2004-10-12 Hitachi, Ltd. Configuration information management system, method, program, and program storage device
JP4131514B2 (ja) * 2003-04-21 2008-08-13 インターナショナル・ビジネス・マシーンズ・コーポレーション ネットワークシステム、サーバ、データ処理方法及びプログラム
US7827362B2 (en) * 2004-08-24 2010-11-02 Symantec Corporation Systems, apparatus, and methods for processing I/O requests
US7287133B2 (en) * 2004-08-24 2007-10-23 Symantec Operating Corporation Systems and methods for providing a modification history for a location within a data store
US7730222B2 (en) * 2004-08-24 2010-06-01 Symantec Operating System Processing storage-related I/O requests using binary tree data structures
US7904428B2 (en) * 2003-09-23 2011-03-08 Symantec Corporation Methods and apparatus for recording write requests directed to a data store
US7472384B1 (en) 2003-12-02 2008-12-30 Swsoft Holdings, Ltd. System, method and computer program product for on-the-fly patching of executable code
WO2005059757A1 (ja) * 2003-12-19 2005-06-30 Matsushita Electric Industrial Co.,Ltd. 記録デバイス制御装置
US7904192B2 (en) * 2004-01-14 2011-03-08 Agency For Science, Technology And Research Finite capacity scheduling using job prioritization and machine selection
US7676646B2 (en) * 2005-03-02 2010-03-09 Cisco Technology, Inc. Packet processor with wide register set architecture
JP4372043B2 (ja) * 2005-05-12 2009-11-25 株式会社ソニー・コンピュータエンタテインメント コマンド実行制御装置、コマンド実行指示装置およびコマンド実行制御方法
JP4611830B2 (ja) * 2005-07-22 2011-01-12 優 喜連川 データベース管理システム及び方法
US7376758B2 (en) * 2005-11-04 2008-05-20 Sun Microsystems, Inc. I/O dependency graphs
JP4755487B2 (ja) * 2005-11-24 2011-08-24 株式会社日立製作所 データ読出しシステム、データ読出し装置およびデータ読出し方法
US7721009B2 (en) 2006-11-22 2010-05-18 International Business Machines Corporation Method for providing high performance scalable file I/O through persistent file domain and functional partitioning
JP4941034B2 (ja) * 2007-03-20 2012-05-30 富士通株式会社 アクセス制御装置およびアクセス制御方法
JP4071816B1 (ja) * 2007-03-22 2008-04-02 透 降矢 合成関係演算を利用したマルチオペレーション・プロセッシングを用いたデータベースのクエリー処理システム
JP2009199367A (ja) * 2008-02-21 2009-09-03 Nec Corp 計算機システム、i/oスケジューラ及びi/oスケジューリング方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7069555B1 (en) * 2000-09-29 2006-06-27 Microsoft Corporation Super-region instruction scheduling and code generation for merging identical instruction into the ready-to-schedule instruction
US20060136570A1 (en) * 2003-06-10 2006-06-22 Pandya Ashish A Runtime adaptable search processor
US20050108414A1 (en) * 2003-11-14 2005-05-19 Taylor Thomas M. System and method for transmitting data in computer systems using virtual streaming
US7519744B2 (en) * 2004-05-07 2009-04-14 Hitachi, Ltd. Method and apparatus for managing I/O paths on a storage network using priority
US20070150624A1 (en) * 2005-11-04 2007-06-28 Sun Microsystems, Inc. Pipelined I/O execution

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107239328A (zh) * 2016-03-29 2017-10-10 上海普兰金融服务有限公司 任务分配方法及装置
CN107239328B (zh) * 2016-03-29 2020-06-09 上海普兰金融服务有限公司 任务分配方法及装置
CN111399912A (zh) * 2020-03-26 2020-07-10 超验信息科技(长沙)有限公司 一种面向多周期指令的指令调度方法、***及介质
CN114706798A (zh) * 2022-06-08 2022-07-05 四川省人工智能研究院(宜宾) 基于注意力机制的固态硬盘数据预取方法
CN114706798B (zh) * 2022-06-08 2022-08-12 四川省人工智能研究院(宜宾) 基于注意力机制的固态硬盘数据预取方法

Also Published As

Publication number Publication date
EP2353079A1 (en) 2011-08-10
US8412856B2 (en) 2013-04-02
KR20110074489A (ko) 2011-06-30
EP2353079A4 (en) 2017-02-15
US20110099204A1 (en) 2011-04-28
CN102171647B (zh) 2014-02-26
BRPI1001274B1 (pt) 2020-02-04
BRPI1001274A2 (pt) 2016-02-16
CN103123595B (zh) 2016-03-02
CN102171647A (zh) 2011-08-31
EP2353079B1 (en) 2018-12-05
JP5292473B2 (ja) 2013-09-18
JP2012505490A (ja) 2012-03-01
KR101188472B1 (ko) 2012-10-10
WO2011053463A1 (en) 2011-05-05

Similar Documents

Publication Publication Date Title
CN102171647B (zh) 使用即时数据分块的文件输入/输出调度
KR102240557B1 (ko) 데이터 저장 방법, 장치 및 시스템
CN102047305B (zh) 文件输入/输出调度器及其处理方法
KR101979621B1 (ko) 다운로드 가능한 컨텐츠의 전송을 최적화하는 시스템 및 장치
US7707337B2 (en) Object-based storage device with low process load and control method thereof
CN102904878B (zh) 用于数据包的高效下载的方法及***
CN103403712A (zh) 基于内容的文件组块
US9286228B2 (en) Facilitating caching in an image-processing system
CN104615419A (zh) 信息处理设备、程序和记录介质
EP2957088B1 (en) Serialization for delta encoding
US9111370B2 (en) Buffer display techniques
CN101127578A (zh) 一种处理海量数据的方法及***
TW200809597A (en) Method and system for device to request and operate an external buffer provided from the host
JP2006252312A (ja) コンテンツ管理システム及びこれに用いるプログラム
US20130329938A1 (en) Encoding digital assets along with content control data as a quilted image representation

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant