CN1181441C - 一种直接存储器访问控制器系统 - Google Patents

一种直接存储器访问控制器系统 Download PDF

Info

Publication number
CN1181441C
CN1181441C CNB011074272A CN01107427A CN1181441C CN 1181441 C CN1181441 C CN 1181441C CN B011074272 A CNB011074272 A CN B011074272A CN 01107427 A CN01107427 A CN 01107427A CN 1181441 C CN1181441 C CN 1181441C
Authority
CN
China
Prior art keywords
request
door
dma controller
input end
signal
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.)
Expired - Fee Related
Application number
CNB011074272A
Other languages
English (en)
Other versions
CN1365061A (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.)
Nationz Technologies Inc
Original Assignee
ZHONGXING INTEGRATED CIRCUIT DESIGN CO Ltd SHENZHEN CITY
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 ZHONGXING INTEGRATED CIRCUIT DESIGN CO Ltd SHENZHEN CITY filed Critical ZHONGXING INTEGRATED CIRCUIT DESIGN CO Ltd SHENZHEN CITY
Priority to CNB011074272A priority Critical patent/CN1181441C/zh
Publication of CN1365061A publication Critical patent/CN1365061A/zh
Application granted granted Critical
Publication of CN1181441C publication Critical patent/CN1181441C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Bus Control (AREA)

Abstract

本发明公开了一种计算机领域中的直接存储器访问控制器系统,由若干DMA控制器组成,每个DMA控制器都包括一个级联输入请求源和一个级连输出请求源和一个以上的外部请求源;前一个DMA控制器的请求输出接到下一个DMA控制器的级联请求输入源,依次连接,最后一个DMA控制器DMAn的级连请求输出源接到第一个DMA控制器DMA1的请求输入;本发明解决了资源浪费严重、设计难度大和使用不方便的问题。

Description

一种直接存储器访问控制器系统
技术领域  本发明涉及计算机领域,尤其涉及计算机中的微处理器系统。
背景技术  目前,计算机在各个领域中都有着广泛的应用,在计算机中的通讯微处理器系统中,一般有多个直接存储器访问控制器(Direct MemoryAccess,以下简称DMA控制器),每个DMA控制器分别为多个通讯端口服务。在传统的微处理器系统中,这多个DMA控制器彼此之间是相互独立的,它们各自为自己的通讯端口服务。比如目前大量采用的AMD公司的Am186CC微控制器提供了12个DMA通道,这12个DMA通道分别被用来完成诸如HDLC、UART、高速UART、USB等通讯接口和存储器之间的数据交换(见Am186TMCC/CH/CU MicrocontrollersUser’s Manual)。另外,还有些通用DMA控制器也包括多个DMA通道,比如Inter公司的8237A-5微控制器提供了4个DMA通道,但是这些DMA通道和前面所述的AMD公司的Am186CC微控制器一样,彼此之间是独立的。由于这些DMA控制器彼此之间都是完全独立的,所以它们的请求源都是固定不变的(如图1所示),当用户并不需要使用很多通讯端口时,不用的通讯端口所对应的DMA控制器就会被闲置,从而造成这些硬件资源的浪费。另一方面,在数据交换过程中,数据在非连续空间的交换过程都是通过DMA控制器执行多个DMA命令完成的。美国专利US05713044提出的解决多个DMA命令有序执行的方法是使用DMA的链式工作模式,但是该解决方案却忽略了闲置DMA控制器的有效利用。因为在链式工作模式下DMA的命令和描述符都存放在存储器中,所以一方面增加了设计的复杂度,浪费了闲置的DMA资源;另一方面使得支持链式工作模式的DMA控制器使用起来很不方便。同时,在一些高速数据传输过程中,DMA控制器必须能完成多个命令及时切换,但链式工作模式下DMA控制器需要从存储器中寻找传输命令,可能因为命令切换迟缓而丢失数据的后果。而且对于像8237A-5这样的不支持DMA链式工作模式的DMA控制器而言,在处理非连续存储空间数据交换的应用中,更是难于使用。
发明内容  本发明的目的是提供一种能充分利用DMA控制器、降低设计的复杂度、减少命令切换时间、提高数据传输效率且使用方便的直接存储器访问控制器系统,以解决现有DMA控制器系统存在的DMA控制器资源浪费严重、设计难度大、命令切换时间长、数据传输效率低和使用不方便的问题。
为了完成上述目的,本发明构造了一种直接存储器访问控制器系统,该系统由若干DMA控制器组成,每个DMA控制器都包括一个级联输入请求源REQxB和一个级联输出请求源REQNEXTx和一个以上的外部请求源REQxA;前一个DMA控制器的请求输出REQNEXTx接到下一个DMA控制器的级联请求输入源REQx+1B,依次连接,最后一个DMA控制器DMAn的级联输出请求源REQNEXTn接到第一个DMA控制器DMA1的级联输入请求源REQ1B。
由于在本发明所构造的直接存储器访问控制器系统中,各个DMA控制器在请求链上的顺序是有序的,因此多个DMA控制器中的多个命令就可以有序地得到执行;而各个DMA命令控制的传输内容是完全独立的,因此可以很方便的实现数据在非连续空间的传输。当DMA对应的通讯通道没有被使用时,由于多个DMA控制器是级联在一起的,每一个DMA都可以在自己的命令完成后发出一个请求给后面的DMA,后面的DMA控制器接收到前一个DMA的请求后进行数据传输,这样多个DMA控制器可以象接力一样进行数据传输,实现单个DMA无法实现的功能。这多个DMA中的命令可以像DMA的链式工作模式一样工作。本发明设计简单,充分利用了DMA资源,提供了灵活的请求机制,可以很方便地实现数据有序地在非连续空间的传输。与DMA的链式工作模式相比,由于本发明的DMA命令存放在请求链上的DMA中,因此本发明可以更快地切换到新的命令,数据传输的效率更高。
附图说明  下面结合附图和实施例对本发明作进一步说明;
图1是目前现有的DMA控制器系统的请求示意图。
图2是本发明所构造的DMA控制器系统中单个DMA请求示意图。
图3是本发明所构造的DMA控制器系统示意图。
图4是本发明所构造的DMA控制器接收请求的示意图。
图5是本发明所构造的DMA控制器输出请求的示意图。
具体本实施方式如图1所示,传统的DMA请求都是固定不变,每一个DMA控制器(如图中所示的DMA1、DMA2、…、DMAn)都只有自己独立的请求源(图中所示的请求源REQ1、请求源REQ2、…、请求源REQn)。多个DMA控制器之间执行命令的顺序没有必然的联系,只和各自请求发生时间和请求源的优先级别有关。当用户并不需要使用很多通讯端口时,不用的通讯端口所对应的DMA控制器就会被闲置,从而造成这些硬件资源的浪费;而且使用起来很不方便。
图2是本发明提供的DMA控制器系统中的DMA控制器的请求示意图。本发明所构造的DMA控制器有两个外部请求源REQA和REQB,以及请求输出端REQNEXT,还设置了一个内部请求源,其中REQA是DMA控制器专用的请求源,REQB是用于级联的请求源。DMA控制器也可以有更多的外部请求源,但一定有一个用于级联的请求源REQB。DMA控制器除了可以接收请求外,还可以发送请求。DMA控制器用REQNEXT向请求链上的下一个DMA控制器发出请求。充分利用空闲的DMA资源,减少了中断次数(相对不支持链式的DMA控制器而言),从此可以看出,本发明减少了访问存储器的次数,使得两个数据块之间的传输间隔时间更少,从而提高了数据传输的效率。减少两个数据块之间的传输间隔时间,这一点对一些高速的通讯端口非常必要,因为如果DMA控制器命令切换时间比实际的数据块的传输间隔时间长,将导致丢失数据的后果。
图3示出了本发明所构造的DMA控制器系统:每个DMA控制器除了有自己专用的请求源外,还有一个级联输入请求源和一个级联输出请求源;将一个DMA的级联输出请求接到下一个DMA的级联输入请求端,构成一个请求链;(请求链上的DMA可以被旁路掉),一个DMA完成自己的传输任务后,请求下一个DMA控制器,直到请求链被打破。由于DMA控制器在请求链上的顺序是有序的,因此多个DMA控制器中的多个命令就可以有序地得到执行;而各个DMA命令控制的传输内容是完全独立的,因此可以很方便的实现数据在非连续空间的传输。具体如图所示,前一个DMA控制器的请求输出REQNEXTx接到下一个DMA控制器的级联请求输入REQx+1B,最后一个DMA控制器DMAn的请求输出REQNEXTn接到第一个DMA控制器DMA1的级联输入请求源REQ1B,这样就形成了一个请求链。如果用户不想把DMA控制器放在请求链上,可以通过写DMA控制器的相关控制位旁路掉相应的DMA控制器或中断请求链。
所述的DMA控制器包括接收请求控制部分和输出请求控制部分,分别如图4和图5所示。
图4所示的接收请求控制部分包括控制位选择请求源MASKA、MASKB、REQ0、REQ1、第一二与门405、第二二与门406、第三二与门408、第四二与门409、第一二或门407、第二二或门410和第三二或门411。MASKA屏蔽外部请求REQA,MASKA低有效;MASKB屏蔽外部请求REQB,MASKB低有效。REQ0是DMA控制器的内部请求源,高有效。REQ1检测外部请求。用户可以写MASKA、MASKB和REQ0位来选择请求源(但不能写REQ1),MASKA、MASKB、REQ0、REQ1都可以被读出。第一二与门405的输入端与MASKB和REQB相连接,输出端接至第一二或门407的一个输入端,第二二与门406的输入端与MASKA和REQA相连接,输出端接至第一二或门407的另一个输入端;第一二或门407的输出端与第三二与门408的输入端相连接;第三二与门408的另一个输入端接收清除输入请求信号CLEARREQ,输出端接至REQ1,REQ1将信号接至第三二或门411的一个输入端;第四二与门409接收清除输入请求信号CLEARREQ和REQ0输出端的信号,输出端接至第二二或门410的一个输入端,第二二或门410的另一个输入端接收写请求位信号WRITEREQ0,输出端接至REQ0;REQ0的输出端接至第三二或门411的另一个输入端;第三二或门411输出端输出REQ信号。REQ1检测到外部请求的条件是REQA和REQB都没有被屏蔽且此时清除输入请求信号CLERAREQ为“0”。当选择外部专用请求REQA时,MASKA被设置为“1”,REQB被设置为“0”。当DMA控制器响应完请求即完成数据传输后发出清除输入请求信号CLEARREQ(低有效),清除外部请求标志REQ1。因此外部请求标志寄存器REQ1的D端输入D REQ1可以用下式表示:
D_REQ1=(REQB·MASKB+REQA·MASKA)·CLEARREQ
                                     (1)
内部请求REQ0为用户提供了软启动的途径。当用户想自己用软件控制DMA的启动时,可以将两个外部请求屏蔽,向内部请求位REQ0写入“1”。同外部请求标志一样,当DMA完成请求响应即传输完数据后将用清除输入请求信号CLEARREQ清除内部请求标志REQ0。用户写内部请求位的值写请求位信号WRITEREQ0优先于清除输入请求信号CLEARREQ,内部请求位REQ0的D端输入D_REQ0可以用下式表示:
D_REQ0=REQ0·CLEARREQ+WRITEREQ0
                                     (2)
DMA控制器根据外部请求寄存器REQ1和内部请求寄存器REQ0启动数据传输。REQ是DMA控制器内部的有效的请求信号,只要存在内部请求或外部请求,该信号有效。因此该信号是REQ1和REQ0的相或,如式(3)所示:
REQ=REQ0+REQ1                       (3)
图5所示的输出请求控制部分含有旁路寄存器BYPASS、请求链终止寄存器BREAKOUT、反向器503、第一三与门504、第二三与门505和二或门506。BYPASS是旁路寄存器,用户可以向该位写入“1”旁路掉该DMA控制器对请求链的阻塞作用。当DMA控制器的旁路标志BYPASS为“1”时,级联请求输入REQB将直接从级联请求输出端REQNEXT输出,仿佛这个DMA控制器不存在一样。当用户不希望DMA控制器的工作影响级联请求在请求链上的传输时,可以将该DMA控制器旁路掉。BREAKOUT是请求链终止寄存器,用户可以向该位写入“0”屏蔽级联请求输出REQNEXT。当用户想在某一个DMA控制器停止级联请求的传输时,可以设置终止标志打破请求链。COMPLETE是DMA控制器完成数据传输发出的高电平有效信号,持续一个周期。在DMA控制器中还包括反向器503、第一三与门504、第二三与门505和二或门506;第一三与门504的输入端分别接收REQB、旁路寄存器BYPASS和请求链终止寄存器BREAKOUT信号,输出端接至二或门506的输入端;第二三与门505的输入端分别接收旁路寄存器BYPASS信号、请求链终止寄存器BREAKOUT信号和DMA控制器完成数据传输发出的高电平有效信号COMPLETE,输出端接至二或门506的另外一个输入端,二或门506输出REQNEXT信号。级联请求输出REQNEXT受到三个因素影响:级联请求是否被屏蔽(BREAKOUT是否为“0”)、DMA控制器是否被旁路(BYPASS是否为“1”)、DMA控制器是否完成数据传输(COMPLETE是否为“1”)。当级联请求被屏蔽时,REQNEXT将保持“0”,无法产生有效的请求输出。当BREAKOUT为“1”时,在DMA控制器被旁路的情况下REQNEXT输出REQB,否则REQNEXT输出COMPLETE。根据REQNEXT的输出条件,可以写出REQNEXT的输出表达式:
REQNEXT=BYPASS·COMPLETE·BREAKOUT
          + BYPASS·REQB·BREAKOUT                      (4)
下面结合实施例举例说明本发明在多个数据块的有序传输中的一个应用。假设微处理器系统有10个DMA控制器(DMA0~DMA9)处理串口和存储器之间的数据传输,实际应用中只有DMA3和DMA6对应的串口被使用。现在DMA6对应的串口需要把存储器中不同区域中的9个数据块发送出去。按照传统的DMA控制器,DMA6需要接收9个请求,向CPU发出9次中断通知设置新的命令和传输完成;或者采用链式工作模式,DMA6至少需要8次从存储器中读入描述符、8次从存储器中读入传输命令。
在本发明中,用户可以设置DMA0、DMA1、DMA2、DMA4、DMA7、DMA8、DMA9处于级联工作模式下,它们的MASKB都为“1”,MASKA为“0”,REQ0都为“0”,BYPASS都为“0”,BREAKOUT都为“1”;设置DMA3处于旁路模式下,即BYPASS为“1”,且MASKB为“0”、MASKA为“1”,BREAKOUT为“1”;设置DMA5为级联模式,即MASKB为“1”,MASKA为“0”,REQ0为“0”,BYPASS为“0”,但BREAKOUT为“1”;设置DMA6为专用请求模式,即MASKB为“0”,MASKA为“1”,REQ0为“0”,且BYPASS为“0”,BREAKOUT为“1”。用户要完成的9块数据的传输任务可以写成9个有序的命令,每个命令完成一块数据的传输。这9个有序命令有序的设置在下面的DMA控制器中:DMA6、DMA7、DMA8、DMA9、DMA0、DMA1、DMA2、DMA4、DMA5。
当DMA6接收到外部请求REQA时,开始第一块数据的传输,DMA6完成传输后,请求DMA7进行第二块数据的传输,然后依次是DMA8、DMA9、DMA0、DMA1、DMA2、DMA4、DMA5。因为DMA3被旁路,因此DMA3不在请求链上。因为DMA5的终止标志BREAKOUT为“0”,DMA5完成最后一块数据传输后REQNEXT输出为“0”,请求链在此被终止,从而完成多块数据的有序传输。
本发明还可以运用在多个设备有序的和存储器交换数据的应用场合。DMA的有序请求可以有序的启动事件的发生,从而实现多设备有序的和存储器进行数据交换的过程。比如,多个DMA控制器发出的有序请求用来选择开关,通过开关选择不同的设备和从一个复用的通道进行数据交换,而DMA控制器完成这个通道和存储器之间的数据传输。用多个DMA控制器产生的有序请求控制多个设备的选择开关是链式工作模式无法实现的。

Claims (7)

1、一种直接存储器访问控制器系统,其特征在于,由n个相同结构的DMA控制器DMA1、DMA2-----DMAn组成,每个DMA控制器都包括一个级联输入请求源REQB、一个级联输出请求源REQNEXT和一个以上的外部请求源REQA;前一个DMA控制器的请求输出REQNEXT连接到下一个DMA控制器的级联请求输入源REQB,依次连接,最后一个DMA控制器DMAn的级联输出请求源REQNEXTn接到第一个DMA控制器DMA1的级联输入请求源REQ1B。
2、根据权利要求1所述的直接存储器访问控制器系统,其特征在于,所述的DMA控制器包括接收请求控制部分和输出请求控制部分,所述的接收请求控制部分包括四个控制位选择请求源MASKA、MASKB、REQ0和REQ1,还包括第一二与门(405)、第二二与门(406)、第三二与门(408)、第四二与门(409)、第一二或门(407)、第二二或门(410)和第三二或门(411);
第一二与门(405)的输入端与MASKB和REQB相连接,输出端接至第一二或门(407)的一个输入端,第二二与门(406)的输入端与MASKA和REQA相连接,输出端接至第一二或门(407)的另一个输入端;第一二或门(407)的输出端与第三二与门(408)的输入端相连接;第三二与门(408)的另一个输入端接收清除输入请求信号CLEARREQ,输出端接至REQ1,REQ1将信号接至第三二或门(411)的一个输入端;第四二与门(409)接收清除输入请求信号CLEARREQ和REQ0输出端的信号,输出端接至第二二或门(410)的一个输入端,第二二或门(410)的另一个输入端接收写请求位信号WRITEREQ0,输出端接至REQ0;REQ0的输出端接至第三二或门(411)的另一个输入端;第三二或门(411)输出端输出REQ信号;
所述的输出请求控制部分包括旁路寄存器BYPASS、请求链终止寄存器BREAKOUT、反向器(503)、第一三与门(504)、第二三与门(505)和二或门(506);
第一三与门(504)的输入端分别接收REQB信号、旁路寄存器BYPASS信号和请求链终止寄存器BREAKOUT信号,输出端接至二或门(506)的输入端;第二三与门(505)的输入端分别接收旁路寄存器BYPASS信号、请求链终止寄存器BREAKOUT信号和DMA控制器完成数据传输发出的高电平有效信号COMPLETE,输出端接至二或门(506)的另外一个输入端,二或门(506)输出REQNEXT信号。
3、根据权利要求2所述的直接存储器访问控制器系统,其特征在于,在所述的DMA控制器接收请求控制部分中,当所述的控制位选择请求源MASKA为低电平时有效。
4、根据权利要求2所述的直接存储器访问控制器系统,其特征在于,在所述的DMA控制器接收请求控制部分中,当所述的控制位选择请求源MASKB为低电平时有效。
5、根据权利要求2所述的直接存储器访问控制器系统,其特征在于,在所述的DMA控制器接收请求控制部分中,当所述的控制位选择请求源REQ0为高电平时有效。
6、根据权利要求2所述的直接存储器访问控制器系统,其特征在于,在所述的DMA控制器输出请求控制部分中,当所述的旁路寄存器BYPASS为高电平时有效。
7、根据权利要求2所述的直接存储器访问控制器系统,其特征在于,在所述的DMA控制器输出请求控制部分中,当所述的请求链终止寄存器BREAKOUT为低电平时有效。
CNB011074272A 2001-01-09 2001-01-09 一种直接存储器访问控制器系统 Expired - Fee Related CN1181441C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB011074272A CN1181441C (zh) 2001-01-09 2001-01-09 一种直接存储器访问控制器系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB011074272A CN1181441C (zh) 2001-01-09 2001-01-09 一种直接存储器访问控制器系统

Publications (2)

Publication Number Publication Date
CN1365061A CN1365061A (zh) 2002-08-21
CN1181441C true CN1181441C (zh) 2004-12-22

Family

ID=4656355

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB011074272A Expired - Fee Related CN1181441C (zh) 2001-01-09 2001-01-09 一种直接存储器访问控制器系统

Country Status (1)

Country Link
CN (1) CN1181441C (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106771958B (zh) * 2015-11-19 2020-11-03 恩智浦美国有限公司 具有低功率扫描系统的集成电路
CN109669896B (zh) * 2017-10-13 2022-03-08 技嘉科技股份有限公司 具有多主控芯片的主机板及切换控制顺序的方法
CN111352878B (zh) * 2018-12-21 2021-08-27 达发科技(苏州)有限公司 数字信号处理系统及方法
US11003606B2 (en) * 2019-06-21 2021-05-11 Microchip Technology Incorporated DMA-scatter and gather operations for non-contiguous memory

Also Published As

Publication number Publication date
CN1365061A (zh) 2002-08-21

Similar Documents

Publication Publication Date Title
US5822553A (en) Multiple parallel digital data stream channel controller architecture
US5797043A (en) System for managing the transfer of data between FIFOs within pool memory and peripherals being programmable with identifications of the FIFOs
US6044225A (en) Multiple parallel digital data stream channel controller
US7305510B2 (en) Multiple master buses and slave buses transmitting simultaneously
EP0951678A1 (en) Multi-threaded fifo pool buffer and bus transfer control system
CN112035388B (zh) 一种基于PCI-e通道的高性能加解密方法
CN103714026A (zh) 一种支持原址数据交换的存储器访问方法及装置
CN100592272C (zh) 多处理器共享外设电路实现方法及其电路
CN1181441C (zh) 一种直接存储器访问控制器系统
WO2024103720A1 (zh) 一种数据传输方法、装置、电子设备及非易失性可读存储介质
CN1181438C (zh) 异步时钟域设备对共享存储装置访问的控制方法
CN1191530C (zh) 多命令部件共用主控器的pci主桥
CN1661580A (zh) 直接存储器访问传输装置及其方法
CN1277168C (zh) 一种无需使用单片机的pc/104总线和can总线之间的接口
JPH0544696B2 (zh)
JPS61150055A (ja) Dmaデ−タ転送方式
JPS62165256A (ja) 通信制御処理装置におけるデ−タ転送方式
KR100208251B1 (ko) 데이터 이중 처리 장치
JPS62297960A (ja) デ−タ転送方式
JPH04137061A (ja) データ伝送制御回路
JPH0690711B2 (ja) メモリアクセス制御方式
JPS6238901A (ja) プログラマブルコントロ−ラ
JPS61281344A (ja) 2ポ−トメモリのアクセス制御方法
JPS61120262A (ja) メモリ間インテリジエントdma制御装置
JPH03290750A (ja) Dma転送方法

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
C56 Change in the name or address of the patentee

Owner name: GUOMING TECHNOLOGY CO., LTD.

Free format text: FORMER NAME: ZHONGXING INTEGRATED CIRCUIT DESIGN CO. LTD., SHENZHEN CITY

CP03 Change of name, title or address

Address after: Floor nine, technology innovation service center, 1 Qilin Road, Guangdong, Shenzhen Province, China: 518058:

Patentee after: NATIONZ TECHNOLOGIES Inc.

Address before: Floor nine, technology innovation service center, 1 Qilin Road, Guangdong, Shenzhen Province, China: 518058:

Patentee before: Nationz Technologies Inc.

Address after: 518058, three, 2 Software Park, hi tech Zone, Shenzhen hi tech Zone, Guangdong, Nanshan District Province, three, three

Patentee after: Nationz Technologies Inc.

Address before: Floor nine, technology innovation service center, 1 Qilin Road, Guangdong, Shenzhen Province, China: 518058:

Patentee before: Nationz Technologies Inc.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20041222

Termination date: 20150109

EXPY Termination of patent right or utility model