三值光计算机监控系统的内外存交互机制

2015-12-20 06:56严丽平
计算机工程与设计 2015年12期
关键词:链表服务器端内存

宋 凯,严丽平

(1.华东交通大学 信息工程学院,江西 南昌330013;2.华东交通大学 软件学院,江西 南昌330013;3.武汉大学 计算机学院,湖北 武汉430072)

0 引 言

光学计算机因其自身的物理特性,具备速度快、位数多、可用物理状态多以及功耗低等诸多优势[1-3]。三值光学计算机研究团队提出了以水平偏振光、垂直偏振光以及无光态3种状态表示信息的三值光学计算机体系[4]。在此后的研究过程中,三值光计算机的研究者们不懈努力,在硬件体系和软件结构方面取得了一系列的成就[5-7]。三值光学计算机的第二代实验系统已经具有数千位数据宽度的可重构三值逻辑光学处理器,而且位数很容易扩展,证实了这种计算机数据位数众多和处理器可重构的理论结论[8,9]。目前,三值光计算机的研究进入了应用探索阶段,提出了与高性能计算融合的概念结构,三值光计算机作为高性能集群机的特殊计算节点,因其数据位众多的特性更适合于处理位数宽度很大或者数据总量很大的计算。考虑到三值光学计算机的内存空间有限[10,11],大量的数据只能存储在外存中,这带来了三值光计算机运算时操作数如何在海量的外存和有限的内存之间交互的新课题。笔者对此进行了深入研究,设计和实现了三值光计算机监控系统内外存交互的方案,并对这个方案进行了实验验证。

1 三值光学计算机中内存和外存交换数据的必要性和特殊性

三值光学计算机执行用户的运算请求时往往要重构处理器,若用户的数据量较少,为提高处理器众多数据位的利用率,会将几个用户的运算请求合并成一个规模适当的大任务,这时就要再次整理用户数据,因此,若用它执行数据量较少的任务,则重构处理器和数据整理所花的代价会在整个工作时间中占有较大的比例,使三值光学计算机的效率降低。反之,运算请求的数据量越大,三值光学计算机的工作效率就越高。然而,运算请求的数据量越大,其运算请求文件的规模就越大,这意味着将用户运算请求文件全部放入三值光学计算机的内存是不可接受的,必须将它们放入海量外存中,而在执行运算请求的不同时间段将相关用户运算请求文件的不同部分调入内存。因此,在三值光学计算机执行运算请求期间,实现内存和外存文件之间分段交换数据的技术十分必要。为便于管理以及与外存中其它文件区别,三值光学计算机研究团队规定用户运算请求文件必须使用toc后缀,本文称为TOC文件。

鉴于TOC文件存放在外存,一般而言,高性能计算用户使用光学处理器时将经历以下步骤:①用户端界面接收输入的运算请求,并生成三值光计算机专用格式文件(XX.toc,XX 是用户自定义运算请求文件名的通配符),发送该文件给服务器端的监控软件通信管理模块;②通信管理模块将完整的XX.toc文件存入三值光学计算机的海量外部存储器中;③通信管理模块从XX.toc文件中截取请求调度和分配处理器资源所需的信息 (包括运算真值表,数据格式信息等);④监控软件中的任务管理模块调度运算请求和分配处理器资源,生成光学处理器的重构码,并将其送入下位机来重构光学处理器;⑤监控系统的数据整理模块从海量外存储器中的XX.toc文件中读取适当的操作数块到内存;⑥数据整理模块对内存中的数据块整理后送入下位机进行运算;⑦将下位机运算完的结果按照读入操作块大小,写入相应结果TOC文件,发回给用户端界面。

在第④步进行任务调度和分配处理器资源时,并不需要考虑用户的具体数据,而只需要考虑用户的运算方式和数据的整体信息,因此在第③步只需从TOC 文件中取出与此相关的信息,按三值光学计算机研究团队目前给出的文件格式协议规范,这部分信息位于TOC 文件的头部,本文称其为文件头。在第⑤步进行数据计算时,也没有足够的内存把TOC文件的全部数据容下,只能分批顺序将数据从TOC文件调入内存。这种每次从外存文件中读取一部分数据,而且数据不能重复、不能遗漏、多文件并行的外存访问模式是三值光学计算机中内存和外存交换数据的特殊性。同理第⑦步写入运算结果的过程也具有同样的特性。

综上所述,监控系统内外存交互机制的主要工作可归结为以下几个方面:根据三值光学计算机研究团队给出的相关规范,设计出TOC 文件格式、构造TOC 文件的创建以及读写操作数的方法、形成TOC文件中的操作数调入内存的策略。

2 TOC文件格式

TOC文件格式主要体现在文件头设计中,该设计应该遵循以下的原则:①文件头中应该尽量避免冗余信息;②应易于解析;③其中应包含请求调度和处理器资源分配的全部信息。按照以上的原则,笔者针对结构化数据运算请求和普通数据运算请求分别设计了文件头格式。

2.1 结构化数据运算请求文件头格式

结构化数据运算请求文件头格式如图1 所示,共有8个字段组成。预留扩展字段暂时没有作用,作为后期扩展使用;数据类型标志用来供监控系统服务器端判定此次运算请求的数据类型,0表示结构化数据运算请求,1表示普通数据运算请求;文件头长度用于说明文件头的总长度,由于结构化数据的真值表和数据格式以及数据个数都是不确定的,所以其文件头长度各不相同,必须设置本字段以便于服务器端可以正确读取文件头,而不会越界读取结构化操作数;结构数据成员数字段用于说明本次运算请求中的结构化数据的成员数量,这是服务器端构造结构数据所需的参数之一。用户字符和通信内码映射字段用来保存用户表达三值信息所使用的3个字符与监控系统网络通信所使用的通信编码之间的对应关系,用户端的每个字符采用8位存储,而监控系统的通信编码用2位对应一个字符,从而可以减少通信量;结构运算真值表字段用于记录结构数据每个成员的运算真值表,其项数由上述的第4个字段决定,该字段是服务器端生成重构码的必备信息;结构数据格式字段用于说明本次请求的结构数据各个成员的位数,其项数与结构运算真值表字段中的项数相同;结构数据个数字段用于记录结构数据的总个数,该字段可以告知服务器端本次运算请求的总数据量,以便于处理器的资源分配。

图1 结构化数据运算请求文件头格式

2.2 普通数据运算请求文件头格式

普通数据运算请求文件头格式如图2所示,共有5个字段。其中预留扩展、数据类型标志以及用户字符与通信内码映射字段在2.1节已经阐述,此处不再赘述。运算个数字段用于记录此次运算的实际运算个数,便于服务器端后续的调度处理;第n个运算字段一共有16项 (运算个数为4位),每项有4个成员,真值表是生成重构码的必备信息,操作数个数字段便于服务器端选择重构的时机,操作数起始地址可以实现操作数的随机读取,操作数位数最大值为服务器端分配处理器资源提供参考。从图2的格式可以看出,普通数据运算请求文件头的总长度是固定的,这样在服务器端可直接读出文件头信息赋予内存中按照约定格式构造好的数据结构,服务器端所需的各种信息即可直接获取。

图2 普通数据运算请求文件头格式

3 TOC文件的创建以及读写操作数方法

由于TOC文件使用了专门设计的文件头格式,其创建以及读写过程与普通的文件并不相同,下面将分别予以介绍。

3.1 TOC文件的创建方法

结构数据文件和普通数据文件的都是由监控系统的用户界面生成的,但它们的创建过程略有不同,根据数据类型标志,引导创建过程进入不同的分支,可将两种文件的创建方法融合在一起,其过程可描述如下:

(1)创建二进制空文件,根据用户输入的数据类型标志转入不同的分支:0转入 (2);1转入 (3);其它则提示输入错误,重新输入。

(2)根据用户输入的结构数据成员数信息在内存中构造结构数据文件头结构,将该信息和数据类型标志信息写入文件头结构相应项中,转入 (4)。

(3)在内存中创建普通数据文件头结构,将数据类型标志位写入文件头结构相应项中。

(4)将用户输入的用户字符与通信内码映射信息记录在文件头结构的相应项中。若数据类型标志为0,转入(5),否则转入 (7)。

(5)将用户输入的具体运算结构的真值表信息以及结构数据格式信息记录在文件头结构的相应项中,统计出文件头长度,将其写入文件头结构的相应项中。

(6)调用写操作数方法,将该结构操作数写入文件中,判断用户是否继续提交新的结构操作数,若有,则循环执行本步骤,否则转入 (8)。

(7)将用户输入的具体运算的真值表信息记录在文件头结构的相应项中。调用写操作数方法,将该运算的操作数写入文件中。判断用户是否继续提交新的运算,若有,则循环执行本步骤,否则继续。

(8)若数据类型标志为1,统计出运算个数,否则统计结构数据个数,将其写入文件头结构的相应项中。调用rewind方法将文件位置标记置为0,调用fwrite方法将内存中的文件头结构信息写入文件。

3.2 TOC文件的读写方法

(1)写操作方法

在结构数据文件中,由于结构操作数的格式和长度都是固定的,因此每个结构操作数在文件中的起始地址是可以直接计算的,这使得写操作时不需要记录写入的地址,即可实现随机读取。普通数据文件中操作数的格式和长度都是不固定的,因此每写入一个操作数应该在文件头结构中记录本次写操作的起始地址,以便于实现后续的随机读取。写操作方法可归纳为以下几个步骤:

1)判断文件位置标记是否为0,若为0,调用fseek方法向前移动文件头结构的长度。若数据类型标志为0,则跳过下一步,否则继续。

2)调用ftell方法获取当前文件位置标记,并将其写入文件头结构的操作数起始地址项中。统计本次写入操作数的个数,并将其写入文件头结构的相应项中。

3)调用fwrite方法,将操作数写入文件中。

(2)读操作数方法

读操作数的时机通常发生在调度和处理器资源已经分配完毕,重构码已经生成并送入下位机时,此时需读取操作数并送入下位机运算。读操作数方法应具备随机读取的能力,即在给定任意操作数序号和所需读取操作数个数的情况下,可立即完成读任务。读操作数方法的具体步骤为:

1)若数据类型标志为0,据文件头长度、结构数据格式及需读取操作数的序号和个数计算本次读操作的起始地址和操作数总长度;若数据类型标志为1,则从文件头结构中获取操作数起始地址,并根据下一运算操作数起始地址值计算出操作数总长度。

2)根据操作数文件地址的值,使用fseek方法对文件位置标记重定位。

3)根据操作数总长度,调用fread方法将的操作数读入内存缓冲区。

4 TOC文件中的操作数调入内存的策略

TOC文件中的操作数调入内存的策略是以三值光计算机监控系统的内存管理机制为基础的,下面首先介绍监控系统的内存管理机制。

4.1 监控系统的内存管理机制

为了更高效地使用有限的内存空间,监控系统采用分块机制管理内存。简单来说,监控系统的内存管理机制具备以下特点:

(1)具有N 个大小为M 的内存块结构以及空闲链表和已分配链表。其结构如图3 (a)、(b)、(c)所示。

(2)初始情况为:所有的内存块都在空闲链表中,已分配链表为空。

(3)分配出去的内存块将会组成内存区 (结构如图3(d)所示),并移入已分配链表。

(4)回收的内存区将拆散为内存块,并移回空闲链表。

图3 内存管理机制主要数据结构

4.2 TOC文件中的操作数调入内存的策略

TOC文件中的操作数调入内存的过程实际上就是采用读操作方法将指定操作数读入缓冲区,为它们分配内存块的过程。具体步骤为:

(1)计算所需操作数的长度,对于结构数据可根据结构数据以及所需操作数个数进行计算;对于普通数据有两种情况,其一是取一个运算的全部操作数,其长度可根据本运算操作数起始地址和下一运算操作数起始地址的差值获得,其二可以直接指定所需操作数长度。

(2)根据操作数长度和内存块的大小,计算所需的内存块数目。

(3)判断空闲内存块链表中的数量是否足够,如果够用则转入 (5),否则转入 (4)。

(4)根据优先级策略,判断已分配链表中是否有符合回收条件的内存区 (内存块组),如果有,则将其回收,并转入 (5),否则直接返回无可用内存块信息。

(5)调用获取内存块方法,完成内存区分配,调用读操作数方法,将操作数从文件读入已分配的内存区中。

优先级策略是指必须满足两个条件时才发生替换:①待分配的操作数优先级高于被替换的内存区的优先级才能进行替换;②内存块的数目必须足够多,即要回收的内存分区的内存块加上空闲链表中的内存块不小于待分配内存块数目。获取内存块方法是指从空闲链表中得到所需数目的内存块,链接成内存分区,并按优先级放入已分配链表的过程。读操作数方法就是第四部分所述的方法。

为了更清楚的描述为外存中的操作数分配内存块的过程,现举例说明。假设:内存块的数量和大小都是8,则空闲内存块链表和已分配内存块链表的初始情况如图4所示。此时需要从外存先后读出两组操作数,第一组操作数为aaaaabbbbb,长度为10,优先级为2,第二组操作数为abcabcabcbbcbbcbbc,长度为18,优先级为3,则按上述策略分配内存块以后的情况如图5所示。

图4 初始内存块链表情况

图5 分配后内存块链表情况

5 实 验

实验的主要目的是验证本文设计的内外存交互机制的各个环节是可行的,并能有效解决有限的内存和海量数据之间的矛盾。结构数据和普通数据的实验流程基本相同,本文主要介绍普通数据运算的实验过程。可简单概括为以下几个步骤:

(1)根据上述设计编写监控系统用户界面和服务器端处理程序,使用用户界面输入数据类型标志信息及数据的真值表、操作数等信息,生成标准格式的TOC 文件source_file。

(2)通过socket通信机制或者MPI独立进程通信机制将TOC文件发送至监控系统服务器端,并保存为server_file。

(3)监控系统服务器端首先将server_file文件头信息读取到已构造好的数据结构中,这样用户界面所统计的各种信息在服务器端可以直接使用。

(4)按照各操作数长度为它们分配内存区,并对进入内存的操作数进行模拟运算 (大小写转换),将运算完的结果写回server_file,并释放内存块,继续为后续操作数服务,直至所有操作数处理结束为止。

(5)将server_file发回给客户端,并保存为result_file。

查看source_file和result_file的内容,如果两个文件头的内容一致,并且操作数完成了大小写的转换,可以验证上文所述的文件头设计、TOC 文件的创建以及读写方法是正确有效的。其对比如图6 所示。由于是二进制文件,非字符信息显示为乱码,但可以清楚的看到字符信息的转换是正确的,而且非字符信息笔者也进行了打印比对,证明两者是一致。

图6 处理前后的TOC文件对比

不过,仅仅比对这两个文件,无法准确的知道内存块的分配过程是否正确、内存的管理机制是否有效。为此在分配内存的过程中,增加了多条打印语句,以描述各个阶段内存块的使用情况。如图7所示。

图7 内存块的使用情况

在本实验中内存块的数量和大小依然是8,mblock表示内存块,mpartition表示内存区,图7显示了在初始情况下以及为第一个运算的操作数分配了内存块以后内存块链表的情况,这些信息和理论设计的信息是一致的,采用这种方法也可以查看内存区回收前后的链表情况。实验结果表明,本文设计的内外存交互机制是正确的、可行的、有效的。

6 结束语

三值光计算机作为高性能集群的一个特殊节点,与高性能计算机系统融合形成了全新的体系结构,同时也带来了海量的数据信息与有限的内存之间矛盾。本文采用全新的思路,设计了TOC 文件的专用格式,并建立了TOC 文件创建和读写的方法,在内存管理策略中采用了高效的分块管理策略,同时针对三值光计算机的具体问题进行了全新的设计,最终形成了三值光计算机监控系统的内外存交互机制,该机制可以有效的解决上述矛盾。随着三值光计算机与高性能计算机系统的融合程度越来越高,它将在巨位数的信息处理方面发挥更加重要的作用。

[1]Saurabh Kotiyal, Himanshu Thapliyal, Nagarajan Ranganathan.Efficient reversible NOR gates and their mapping in optical computing domain [J].Microelectronics Journal,2014,45 (1):825-834.

[2]Lemos G B,Souto Ribeiro P H,Walborn S P.Optical integration of a real-valued function by measurement of a Stokes parameter[J].JOSAA,2014,31 (4):704-707.

[3]Pan Deng,Wei Hong,Xu Hongxing.Optical interferometric logic gates based on metal slot waveguide network realizing whole fundamental logic operations [J].Optics Express,2013,21 (8):9556-9562.

[4]Jin Y,Wang H J,Ouyang S,et al.Principles,structures,and implementation of reconfigurable ternary optical processors[J].Sci China Ser F,2011,54 (11):2236-2246.

[5]Y Jin Y,Shen Y F,Peng J J,et al.Principles and construction of MSD adder in ternary optical computer[J].Sci China Ser F,2011,53 (11):2159-2168.

[6]Wang X C,Peng J J,Ouyang S.Control method for the optical components of a dynamically reconfigurable optical platform[J].Appl Opt,2011,50 (5):662-670.

[7]Song Kai,Yan Liping.Design and implementation of the onestep MSD adder of optical computer [J].Applied Optics,2012,51 (7):917-926.

[8]Ladd T D,Jelezko F,Laflamme R,et al.Quantum computers[J].NATURE,2010,464 (7285):45-53.

[9]Merali Z.First sale for quantum computing [J].Nature,2011,474 (7349):18.

[10]Fabian L,Wolff E K,Oroszi L,et al.Fast integrated optical switching by the protein bacteriorhodopsin [J].Applied Physics Letters,2010,97 (2):023305.1-023305.3.

[11]Chen G Y,Lu W Q,Xu X X,et al.All-optical time-delay switch based on grating buildup time of two-wave mixing in a bacteriorhodopsin film [J].Applied Optics,2009,48 (28):5205-5211.

猜你喜欢
链表服务器端内存
外部高速缓存与非易失内存结合的混合内存体系结构特性评测
Linux环境下基于Socket的数据传输软件设计
基于二进制链表的粗糙集属性约简
“春夏秋冬”的内存
跟麦咭学编程
基于链表多分支路径树的云存储数据完整性验证机制
浅析异步通信层的架构在ASP.NET 程序中的应用
基于Qt的安全即时通讯软件服务器端设计
链表方式集中器抄表的设计
基于内存的地理信息访问技术