一种信元头转换表的动态存储管理方法

文档序号:7950928阅读:196来源:国知局
专利名称:一种信元头转换表的动态存储管理方法
技术领域
本发明涉及一种采用共享内存型交换结构的ATM(异步传输模式)交换系统中信元头转换表(Input Translation Table-ITT)的动态存储方法,具体地说,涉及交换机领域中ATM信元的交换管理机制。
ATM网是面向连接的通信网,端到端接续是在网络通信开始以前建立,每一个ATM信元在网中独立传输。ATM信元交换实质是根据信元信头的路由选择标号(虚通道指针VPI/虚电路指针VCI),将输入ATM逻辑信道的信元输出到指定的输出ATM逻辑信道上。ATM逻辑信道由以下两个标示符构成物理端口编号和路由选择标号(VPI/VCI)。
在采用共享内存型交换结构的ATM交换机中,必须有一套有效的交换机制,来保证交换网络对信元的解析、转换和存储,以及管理信元净荷在内存区的存储。其中,信元净荷实际并不参与具体的交换过程,而只是信元净荷在内存中的存储地址指针从输入端传到输出端。在输出端,只是把转换后的信元头加到信元净荷上,输出到指定的ATM逻辑信道上。在此过程中,信元头的解析、转换和存储,显得非常重要。
在目前采用的共享内存型交换结构的ATM交换系统中,采用了多种信元头转换和存储管理机制,其中采用最多的是固定长度空间的存取方法,这种方法是对空闲块采用固定大小的分配,虽然存取速度比较快,但是,存储空间的利用率很低,浪费也严重,限制了连接的建立数量,从而,限制了交换机的整体性能。
本发明的技术方案是运用buddy(伙伴)系统,这种方法检索合适大小的空闲块很有效率,合并相邻的空闲块也很简单,能有效实现ITT表的动态存储分配。
本发明采用的buddy(伙伴)系统的ITT表动态存储分配方法,其与连接相关的ITT表内存块存取并不遵循一种简单的模式,例如后分配先释放(栈顺序),或者是先分配后释放(队列顺序),而是以任何顺序请求和释放任意大小的动态存储分配模式。为了节约存储空间,本发明针对基于同一ITT基址的VCI的实际使用范围,分配与之大小相当的内存块。ITT表项空间是在连接建立过程中由软件根据一定的内存分配策略动态分配的,连接拆除时释放该ITT表项空间。
对于VC(虚电路)连接来说,如果多条VC连接享有同样的输入端口、子端口和VPI(虚通道指针),那么,他们将有同样的LUT(THE LOOKUPTABLE信元头检索表)地址,因此,就有同样的ITT基地址,每条连接对于ITT基地址的偏移量由VCI(虚电路指针)决定。在本发明的内存分配策略中,把整个ITT表所能使用的存储空间分成若干长度不一的空间块,对享有同样的ITT基地址的所有VCI,统一申请一块内存区。ITT表的内存空间分配以内存块为单位。分配的空间块的大小,必须大于映射到同一ITT表基址的VCI的使用范围。VCI为16位,但在实际的使用中,并不是从0x0到0xffff都使用了,只是使用了一部分,因此,映射到同一基址的ITT表的实际所需存储空间是可变的。这就意味着在为ITT表分配内存块时,并不是每个内存块都必须分配涵盖整个VCI范围的同样大小的空间。如何提供基于同一ITT表基址的VCI使用范围呢?连接参数里的VCI_base提供与此ITT表基址相关的VCI的最小值。例如如果预先知道连接的VCI最小为1024,最大为2000,就不会安排2k大小的ITT段,因此节约了空间。可设置VCI_base=1024,ITT片段分配代码则会分配1k大小的ITT片段,并调整ITT基址。所以,如果改变了VCI_base,必须把与该LUT相应的连接都关掉,并重建。
本发明所述的伙伴系统,其核心算法是K阶伙伴系统的数学定义S[i+1]=S[i]+S[i-k],此处S[i]为第i的片段的块大小。
因此,如果K=0,S指指数伙伴系统。K=1,指Fibonaci(斐波纳契数列)伙伴系统。K值越大,块空间就越大。为了简化,本发明设置最小的块空间为64,(也就是说S
=64)。因为最大的块空间大小由VCI的最大值决定,也就意味着●对于0阶的伙伴系统,可能的块空间大小有如下几种0x40,0x80,0x100,0x200,0x400,0x800,0x1000,0x2000,0x4000,0x8000。●对于1阶的伙伴系统,S[1]=0x80,可能的块空间大小有如下几种0x40,0x80,0xc0,0x140,0x200,0x340,0x540,0x880,0xdc0,0x1640,0x2400,0x3a40,0x5e40,0x9880,0xf6c0,0x18f40。●对于2阶的伙伴系统,S[1]=0x80,S[2]=0x100,可能的块空间大小有如下几种0x40,0x80,0x100,0x140,0x1c0,0x2c0,0x400,0x5c0,0x880,0xc80,0x1240,0x1ac0,0x2740,0x3980,0x5440,0x7d80,0xb500,0x10940。
伙伴系统处理固定大小的块,当需要一个空闲块时,获得一个有效的块空间。如果没有该空间大小的块时,就把比该空间稍大一点的块分段,以获得所需空间,当一段块被释放后,它寻找自己的伙伴,如果能够找到,则共同组合成更大的空闲块。当释放不再使用的占用块时,系统需要将这新的空闲块插入到ITT空闲块链表中去。即把地址相邻的空闲块归并成更大空闲块,在伙伴系统中则仅考虑互为“伙伴”的两个空闲块的归并。何谓“伙伴”?如前所述,在分配时经常需要将一个空闲块分裂成两个大小相等的存储区,这两个由同一块分裂出来的小块就称之“互为伙伴”。回收空闲快时,只当其伙伴为空闲块时才归并成大块。也就是说,若有两个空闲块即使是地址相邻,但不是又同一大块分裂出来的,也不归并在一起。
在ITT表的动态存储分配中,具体选用几阶伙伴系统取决于连接VPI,VCI的使用情况。例如,如果多条连接的VCI需要的空间是2的n次幂,适合应用指数伙伴系统。因为用于指数系统的空间块正好合适。而如果所需的空间是1025,比较以上三种阶数的伙伴系统的块值,1阶伙伴系统的最佳。
更具体地,本发明中使用0阶伙伴系统,设S
=64。在任何给定的时间,都可能有各种大小的空闲块和占用块。为实现对ITT空间的管理,在每个ITT段中,可配置3种类型的ITT链表A.为每一种大小的空闲块保留一个单独的ITT空闲块链表;B.ITT占用块表C.VP连接ITT表对ITT表的存储空间有分配和回收的管理两个步骤,其中,1.对ITT表的存储空间分配实现步骤如下步骤一、选定伙伴系统的阶数,在ITT表空间初始化过程中,把整个ITT表空间切割成一组依序排列的各种空间块,并为每一种大小的空闲块保留个单独的ITT空闲块链表;步骤二、建立连接时,如果该连接所映射的ITT表空间块已经分配过,则在该空间块中建立一项ITT表项即可;否则,根据VCI-base,确定所需ITT表空间块的大小;步骤三、从最小空闲块链表依次向更大的空闲链表查找,如果存在大小与之一致的空闲块,则分配所需空间。如果并不存在大小与之一致的空闲块,则需要从空间范围更大的空闲块中去查找,直到找到一个空闲块,则将其中的一部分分配给它,而将剩余部分伙伴块插入大小与之一致空闲块的空闲表中。例如当需要分配一个0x1500字节的空间时,由于没有与之相对应的空闲块链表,也就没有0x1500空间的空闲块。于是查找大小为0x2000空闲块的链接表,如果该链接表里没有空闲块可分配,则从大小为0x4000空闲块的链接表中得到一个空闲块,并把它分成两个0x2000空闲块,把其中一个空闲块分配出去,另一块链接在0x2000空闲块的空闲链表里。
2.对ITT表的存储空间回收实现步骤如下步骤一、拆除一条连接时,判断该连接是否是所在的ITT表空间里的取后一条连接;如果是,则进行以下的ITT表空间回收算法,否则不回收该ITT表空间;步骤二、在回收ITT表空间块时,应首先判断其伙伴是否为空闲。若不空闲,则只要将释放的空闲块简单插入在相应大小的空闲链表中即可。若空闲,则从相应大小的空闲链表中找到其伙伴,并在该链表中删除它,然后再判断合并后的空闲块的伙伴是否为空闲块;步骤三、重复步骤二,直到归并所得空闲块的伙伴不是空闲块时,再把该空闲块插入到相应大小的空闲链表中。
进一步,上述的本发明方法中,选取0阶伙伴系统,在ITT表空间初始过程中,把整个ITT表空间切割成大小为0x40,0x80,0x100,0x200,0x400,0x800,0x1000,0x2000,0x4000,0x8000的各种空间块。
本发明的有益效果是采用所述ITT表伙伴系统存储管理机制,有效地节省了系统存储空间,提高了检索合适大小的块空间的效率,简化了合并相邻空闲块的步骤,实现了对ITT表空间的有效存储管理。
图2是本发明中的ITT表的存储空间分配流程图。
图3是本发明中的ITT表的存储空间回收流程图。
先参阅

图1所示它给出了信元头的输入转换表之间的关系,在采用共享内存型交换结构的ATM交换系统中,信元头的解析、转换不是一次完成的,而是需要经过多次转换才能完成。因为如果只用一次转换完成,那么所需的转换表空间为2**(VPI长度+VCI长度),即2**28=256M。要占用这么大的存储空间,一般的交换网系统是无法满足的。信元头的多次转换基于这样一个前提并不是所有的256M连接都在同一个时刻同时存在,因而并不需要这么大的存储空间。信元头的转换在输入端涉及以下几个输入转换表信元头输入端口表11(Port Mode Table,PMT)、信元头检索表12(The LookupTable,LUT)、信元头转换表13(Input Translation Table,ITT)。
上述的这些输入转换表11、12、13都是在连接建立时,在相应的存储空间建立与该连接相关的各个表项。当连接建立后,有信元从该连接输入时通过硬件查表PMT11、LUT12、ITT13等表,得到输出的信元头值。PMT11值由输入端口号110索引得到,PMT11表里存放LUT12表的基址111,加上信元的VPI120值作偏移地址得到ITT表基址121,再加上VCI130值作偏移地址,得到ITT地址131,从而读取到ITT表项。
请参阅图2,其系ITT表13的存储空间分配流程图,把其编成程序2驻留在交换机的只读存储器中,并由其CPU执行启动本程序2,实施对ITT表13的存储空间的分配,在所分配的空间块中建立信元头从ATM逻辑输入信通道至指定的ATM逻辑输出信道的连接表项。本实施例中,选定0阶伙伴系统,程序启动,执行步骤21,把整ITT表13的内存空间切割成10种大小的空间块,并为每一种大小的空间块保留一个单独的ITT空间块链表,之后,执行步骤22,建立一条连接,并根据该连接的信元头路由选择标VPI、VCI查接其所属的ITT表13中的空闲块是否已经存在?若存在,则跳跃而执行步骤27,在所分配的ITT表13中空间块中建立该连接的ITT表项;若该信元头路由连接指向的空闲块不存在,则执行步骤23,根据VCI-base,所需ITT表13空间块的大小,再从最小空闲块链表依次向更大的空闲链表查找,是否存在大小与之一致的空闲块?如果存在大小一致的空闲块,便执行步骤26,把找到的空闲块分配出去,然后执行步骤27,建立此连接的ITT表项;若执行步骤23而知道不存在大小一致的空闲块,则执行步骤24,查询能找到稍大一点的空闲块吗?若不能找到,则仍跳回执行步骤24;若能找到稍大一点的空闲块,便执行步骤25,找到一个稍大的空闲块,将该空闲块中分割出一块大小一致的空闲块予以分配,而将剩余部分插入大小与之一致的空闲块的空表中,之后,执行步骤27,建立此连接的ITT表项。按所选的0阶伙伴系统,在执行步骤21时,把ITT表13的空间切割成大小为{0X40,0X100,0X200,0X400,0X800,0X1000,0X2000,0X4000,0X8000,}10种大小空间块。
请参阅图3,它是ITT表13的存储空间回收的流程图,把其编成程序3驻留在交换机的只读存储器中,并由其CPU执行,启动程序3,其任务是拆除信元头进入的链接,回收已使用过的ITT表13的空间块,使伙伴空间块重新恢复成原有的大小的空间块。启动程序3,首先执行步骤31,折除一条连接时,判断该连接是否是所在的ITT表13空间里的最后一条链接,若不是最后一条连接,执行步骤35,程序返回;若是最后一条链接,则执行步骤32,判断伙伴是否为空闲块?若不空闲,须执行步骤34,从相应大小的空闲链表中找到其伙伴,并在该链表中删除它,然后再判断合并后的空闲块的伙伴是否为空闲块?若空闲,须返回执行步骤32;若不空闲块,则执行步骤34,再把该空闲块插入到相应大小的空闲链表中,再执行步骤35,程序返回。
权利要求
1.一种信元头转换表的动态存储管理方法,其包括对ITT表的存储空间分配和回收两大步骤,其中a.对ITT表的存储空间分配主要有如下步骤(1).根信元信头的路由选择标号VPI/VCI的使用情况,选用相适应阶数的伙伴系统,并在ITT表空间初始化过程中,把整个ITT表空间切割成一组大小依序排列的各种空间块,且为每一种大小的空间块保留一个单独的ITT空闲块链表;(2).建立连接时,如果该连接所映射的ITT表空间块已经分割过,则在该空间块中建立一项ITT表;否则,根据VCI-base,确定所需ITT表空间块的大小;(3).从最小空闲块链表依次向更大的空闲链表查找,如果存在大小与之一致的空闲块,则分配所需空间;如果并不存在大小与之一致的空闲块,则需要从空间范围更大的空闲块中去查找,直到找到一个空闲块,并从其中切割出所需大小的空闲块分配给它,而余下的伙伴空闲块部分插入大小与之一致的空闲块表中;b.对ITT表的存储空间回收主要步骤如下(1).拆除一条连接时,判断该连接是否是所在的ITT表空间里的最后一条连接;如果是,则进行以下的ITT表空间回收算法,否则不回收该ITT表空间,(2).在回收ITT表空间块时,应首先判断其伙伴块是否为空闲,若不空闲,则只要将释放的空闲块简单插入在相应大小的空闲链表中即可;若空闲,则从相应大小的空闲链表中找到伙伴块,并在该链表中删除它,然后再判断合并后的空闲块的伙伴是否为空闲块,(3).依此重复,直到归并所有空闲块的伙伴不是空闲块时,再把该空闲块插入到相应大小的空闲链表中。
2.根据权利要求1所述的信元头转换表的动态存储空间管理方法,其特征在于,所选用的伙伴系统为0阶伙伴系统,在ITT表空间初始化过程中,把整个ITT表空间切割成大小为{0X40,0X80,0X100,0X200,0X400,0X800,0X1000,0X2000,0X4000,0X8000,}10种空间块。
全文摘要
一种信元头转换表的动态存储管理方法,其包括对ITT表的存储空间分配和回收两大步骤,其中主要选用合适阶数的伙伴系统,先将ITT表空间切割成一组大小依序排列的各种大小空间块,并为每一种大小空间块保留一个单独的ITT空闲块链表,建立输入输出逻辑通道连接时,在ITT空闲空间块中检索相应一致大小的空闲块,然后建立该连接ITT表项。拆除连接时,如果该连接不是所映射的ITT空间块中最后一条连接,则直接删除该连接的ITT表项即可。本发明的ITT表伙伴系统存储管理机制,有效地节省了系统存储空间,提高了检索合适大小的空间块效率,简化了合并相邻空闲块的步骤,实现了对ITT表空间的有效存储管理。
文档编号H04L12/40GK1409519SQ01126789
公开日2003年4月9日 申请日期2001年9月18日 优先权日2001年9月18日
发明者周云 申请人:深圳市中兴通讯股份有限公司上海第二研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1