单一中断服务例程线程中处理关联于多个请求的返回实体的方法以及使用该方法的装置与流程

文档序号:14203787阅读:155来源:国知局
单一中断服务例程线程中处理关联于多个请求的返回实体的方法以及使用该方法的装置与流程

本发明涉及一种闪存装置,特别是一种单一中断服务例程线程(isr,interruptserviceroutine)中处理关联于多个请求的返回实体的方法以及使用该方法的装置。



背景技术:

闪存装置通常包含nor快闪装置与nand快闪装置。nor快闪装置为随机存取―存取nor快闪装置的主装置(host)可于地址脚位上提供任何的地址,并及时地由nor快闪装置的数据脚位上获得储存于该地址上的数据。nand快闪装置,从另一方面说,并非随机存取而是序列存取。nand快闪装置无法像如上所述方式存取任何随机地址。相反地,主装置需要写入序列的字节(bytes)的值到nand快闪装置中,用以定义请求命令(command)的类型(如,读取、写入、抹除等),以及用在此命令上的地址。地址辨识一个页面(在闪存中的一个写入作业的最小数据块)或一个区块(在闪存中的一个抹除作业的最小数据块),而不是单一字节(byte)或字符(word)。当关联于发出命令的返回实体,例如,数据、处理状态、错误讯息等,已经被回复后,连接至闪存装置的主装置于单一中断服务例程线程中处理一个返回实体。通常,一旦返回实体处理完毕,结束中断服务例程线程并交还控制权给之前被中断的线程。然而,于多核(multi-core)处理单元中,中断服务例程线程的结束将于不同核间触发上下文转换(contextswitch),产生一定程度的前置成本(overhead)。因此,需要一种单一中断服务例程线程中处理关联于多个请求的返回实体的方法以及使用该方法的装置。



技术实现要素:

本发明的实施例提出一种单一中断服务例程线程中处理关联于多个请求的返回实体的方法,由主装置中处理单元的一核执行。从队列移出多个关联于先前发送命令的实体给储存装置,以及处理移出的实体,直到满足条件为止。

本发明的实施例提出一种单一中断服务例程线程中处理关联于多个请求的返回实体的装置,至少包含队列及处理单元。处理单元包含多个核,以及耦接至队列。处理单元的一个核于加载并执行中断服务例程线程,用以从队列移出多个关联于先前发送命令的实体给储存装置,以及处理移出的实体,直到满足条件为止。

以下实施例提供的详细说明,伴随参考图示。

附图说明

本发明可充分理解,藉由阅读之后的详细说明及范例,以及参考相关图示,其中:

图1系依据本发明实施例之闪存的系统架构示意图;

图2系依据本发明实施例之闪存中的储存单元示意图;

图3系依据本发明实施例之主装置的系统架构图;

图4系依据本发明实施例由接口控制器执行的储存装置互动的方法流程图;

图5及6系依据本发明实施例之由单一中断服务例程线程执行用以处理队列中的实体的方法流程图。

具体实施方式

以下说明系为完成发明的最佳实现方式。其目的在于描述本发明的基本精神,但并不用以限定本发明。实际的发明内容必须由附加的权利要求范围决定。

本发明以特定实施例并参考特定图示进行描述,但本发明并不因此局限,而必须以权利要求限定。必须了解的是,使用于本说明书中的”包含”、”包括”等词,系用以表示存在特定的技术特征、数值、方法步骤、作业处理、组件以及/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、元件、组件,以及/或以上的任意组合。

于权利要求中使用如”第一”、"第二"、"第三"等词系用来修饰权利要求中的组件,并非用来表示之间具有优先权顺序,先行关系,或者是一个组件先于另一个组件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字(而非表示顺序)的组件。

图1系依据本发明实施例之闪存的系统架构示意图。闪存的系统架构10中包含处理单元110,用以写入数据到储存单元180中的指定地址,以及从储存单元180中的指定地址读取数据。详细来说,处理单元110透过存取接口170写入数据到储存单元180中的指定地址,以及透过相同接口从储存单元180中的指定地址读取数据。系统架构10使用数个电子信号来协调处理单元110与储存单元180间的数据与命令传递,包含数据线(dataline)、时钟信号(clocksignal)与控制线(controllines)。資料線可用以傳遞命令、位址、讀出及寫入的資料。控制信号线可用以传递芯片致能(chipenable,ce)、地址提取致能(addresslatchenable,ale)、命令提取致能(commandlatchenable,cle)、写入致能(writeenable,we)等控制信号。存取接口170可采用单倍数据率(singledatarate,sdr)通讯协议或双倍数据率(doubledatarate,ddr)通讯协议与储存单元180沟通,例如,开放nand快闪(opennandflashinterface,onfi)、双倍数据率开关(ddrtoggle)或其他接口。处理单元110可使用存取接口150透过指定通讯协议与主装置160进行沟通,例如,通用串行总线(universalserialbus,usb)、先进技术附着(advancedtechnologyattachment,ata)、序列先进技术附着(serialadvancedtechnologyattachment,sata)、快速周边组件互联(peripheralcomponentinterconnectexpress,pci-e)或其他接口。主装置160可透过存取接口150提供逻辑区块地址(lba,logicalblockaddress)给处理单元110,用以指示写入或读取特定区域的数据。然而,为优化数据写入的效率,存取接口170将一段具有连续逻辑区块地址的数据分散地摆放在储存单元180中的不同实体区域。因此,需要于动态随机存取内存(dynamicrandomaccessmemory)120中储存一个实体储存对照表(又称为host-to-flash—h2f表),用以指出每个逻辑区块地址的数据实际储存于储存单元180中的哪个位置。处理单元110、动态随机存取内存120、寄存器(register)130、存取接口150及170、以及储存单元180可统称为一个储存装置。

图2系依据本发明实施例之闪存中的储存单元示意图。储存单元180可包含由mxn个内存单元(memorycells)组成的数组(array)210,而每一个内存单元储存至少一个位(bit)的信息。闪存可以是nand型或nor型闪存,或其他种类的闪存。为了正确存取信息,行译码单元(row-decodingunit)220用以选择内存单元数组210中指定的行。相似地,列编码单元(column-decodingunit)230用以选择指定行中一定数量的字节的数据作为输出。地址单元240提供行信息给行译码器220,其中定义了选择内存单元数组210中n行中的那些行,用以进行读取或写入操作。相似地,列译码器230则根据地址单元240提供的列信息,选择内存单元数组210的指定行中一定数量的列。熟习此技艺人士可称行为字符线(wordline),称列为位线(bitline)。从内存单元数组210读取出的数据,或欲写入内存单元数组210中的数据可储存于数据缓存器(databuffer)250。内存单元可为单层式单元(single-levelcells,slcs)、多层式单元(multi-levelcells,mlcs)或三层式单元(triple-levelcells,tlcs)。

图3系依据本发明实施例之主装置的系统架构图。此系统架构可实施于桌面计算机、笔记本电脑、手机等,至少包含处理单元310。处理单元310可使用多种方式实施,如以通用硬件,例如,中央处理单元、具平行处理能力的图形处理器或其他具运算能力的处理器,并且在执行微码或软件指令时,提供之后所描述的功能。系统架构更包含队列330,用以储存从存取接口150接收的实体,例如,数据、处理状态、讯息等。队列330顺序性地储存实体(entity)集合。每个实体关联于透过存取接口150发送给处理单元110的一个命令,例如,读取命令、写入命令等。例如,一个实体可包含相应于读取命令的读取数据。一个实体可包含相应于写入命令的错误讯息。集合的操作包含加入实体至尾端,称为推入队列(enqueue),以及从开头移出实体,称为移出队列(dequeue)。以上操作使队列330成为先进先出(fifo,first-in-first-out)的数据结构。第一个加入队列330的实体将会是第一个被移出以及被处理单元310处理的实体。图4系依据本发明实施例由接口控制器执行的储存装置互动的方法流程图。接口控制器350透过储存装置的存取接口150发送命令(步骤s410)。例如,接口控制器350可经由存取接口150发送数据读取命令及读取地址,用以请求从储存单元180读取数据。接口控制器350可经由存取接口150发送数据写入命令、写入地址及数据,用以请求写入数据至储存单元180中的指定位置。接口控制器350经由存取接口150从储存装置接收用以响应之前所发送命令的实体,例如,数据、处理状态、错误讯息等(步骤s420),以及加入接收到实体至队列330(步骤s430)。于完成加入接收到实体的作业后,接口控制器350设定寄存器370,用以指出一个实体以加入至队列330(步骤s440)。寄存器370的设定又可视为发起中断信号。

处理单元310执行的中断处理(interrupthandler)周期性地侦测寄存器370是否已设定。当寄存器370已设定,执行中的任务被中断,接着,处理单元310中的一个核加载并执行中断服务例程(isr,interruptserviceroutine)线程。以下段落描述中断服务例程线程从队列移出多个实体,这些实体关联于之前发送至储存装置的命令,以及处理移出的实体直到至少一个条件满足。

于一个实施例中,中断服务例程线程可处理关联于先前发送命令的实体,直到队列330清空,用以减少上下文转换(contextswitch)的次数。图5系依据本发明实施例之由单一中断服务例程线程执行用以处理队列330中的实体的方法流程图。此方法反复执行一个循环,直到队列330中没有实体待处理。于每一回合,中断服务例程线程从队列330移出实体(步骤s510),执行关联于移出实体的数据处理作业(步骤s520),以及判断队列330中是否还有任何实体待处理(步骤s530)。若是,此流程接着从队列330移出下一个实体(步骤s510)。反之,中断服务例程线程清除寄存器370(步骤s540)。当中断服务例程线程结束时,回复被中断的任务,用以继续未执行完的指令。

于另一个实施例中,中断服务例程线程可处理关联于先前发送命令的实体直到队列330清空,或可限制在指定时间区间内处理关联于先前发送命令的实体,用以减少上下文转换的次数。图6系依据本发明实施例之由单一中断服务例程线程执行用以处理队列330中的实体的方法流程图。此方法开始于设定定时器(步骤s610)。定时器可为倒数定时器(countdowntimer)、码表定时器(stopwatchtimer)等。当经过一段指定的时间区间,定时器逾时。反复执行一个循环,直到队列330中没有实体待处理,或直到定时器逾时。于每一回合,中断服务例程线程从队列330移出实体(步骤s620),执行关联于移出实体的数据处理作业(步骤s630),判断队列330中是否还有任何实体待处理(步骤s640)以及判断定时器是否逾时(步骤s650)。当存在任何待处理的实体(步骤s640中”是”的路径)以及定时器尚未逾时(步骤s650中”否”的路径),此流程接着从队列330移出下一个实体(步骤s620)。反之,中断服务例程线程清除寄存器370(步骤s660)。当中断服务例程线程结束时,回复被中断的任务,用以继续未执行完的指令。

于一个范例,接口控制器350可藉发送多个数据读取命令及连续的逻辑区块地址来读取多媒体数据,例如一段时间的声音、视讯数据等,接着,储存回复的数据至队列330。使用如图5及6的实施例,中断服务例程线程可从队列330移出读取数据以及储存读取数据于缓存器,用以进行后续的播放。于另一个范例,接口控制器350可取得相机模块撷取的影像数据并且藉由发送多个数据写入命令及连续的逻辑区块地址来写入影像数据。之后,接口控制器350可储存关联于先前发送的数据写入命令的回复状态至队列330。使用如图5及6的实施例,中断服务例程线程可从队列330移出状态以及知道数据写入命令是否成功。

虽然图1至3中包含了以上描述的组件,但不排除在不违反发明的精神下,使用更多其他的附加组件,以达成更佳的技术效果。虽然图4至6的流程图采用指定的顺序来执行操作,这些处理显然可包含更多或更少的顺序性或并行执行的操作(例如,使用并行处理器或多线程环境)。

虽然本发明使用以上范例及依据较佳实施例进行说明,但需要注意的是,这些实施例并非用以限缩本发明。相反地,此发明企图涵盖各样变化与相似设置(对熟习此技艺人士是显而易见的)。所以,申请权利要求范围须以最宽广的方式解释来包含所有显而易见的修改与相似设置。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1