数据转送控制方法及装置的制作方法

文档序号:6401667阅读:273来源:国知局
专利名称:数据转送控制方法及装置的制作方法
技术领域
本发明涉及数据转送控制方法及装置。
背景技术
以往,作为控制成组转送(burst transference)的数据转送方法及其装置,例如特开平6-161944所示,通过分别在转送地起始地址寄存器、转送字数寄存器中设定转送地起始地址、转送字数,从而在一次总线周期(总线处理)中,向从转送地起始地址开始的连续地址空间连续转送所指定的转送字数的数据。
图19表示具有PCI总线接口的以往的数据转送装置。由于PCI总线为32位,即具有4个字节的数据宽度,故1个字表示4个字节的大小,1个字的数据表示4个字节大的数据。在向从转送地起始地址开始的连续地址空间转送数据时,成组转送控制部105a产生成组转送,每转送1个字就增加转送字数计数器109的值,直到转送字数计数器109的值与转送字数寄存器106中所保持的值相等为止,在1个总线周期中转送所有的数据。
图20A表示利用以往的数据转送控制装置时,从时帧T0至T11的数据转送的时间图,图20B表示利用以往的数据转送控制装置时,从时帧T12至T23的数据转送的时间图。如图20A、20B所示,在分别向地址40000000和地址40000008等不连续地址转送1个字的数据时,要产生2次总线周期,通过进行2次单转送,才得以转送数据。
(专利文献1)特开平6-161944号公报在以往的数据转送控制装置中,由于在数据的转送地的地址不连续时不能进行成组转送,故不能进行高速数据转送。

发明内容
本发明鉴于上述问题点,其目的在于,提供一种在将1个字单位的数据写入等间隔分离的地址时,利用成组转送的写入方法,可以高速转送数据的转送控制方法及装置。
本发明的数据转送控制装置,是一种与总线连接,并控制向上述总线上的设备转送数据的数据转送控制装置,其特征在于,具备一边将上述总线的写入控制线维持在禁止写入的状态,一边进行数据写入操作的总线周期控制机构。
本发明的数据转送控制装置,是一种与总线连接,并控制向上述总线上的设备转送数据的数据转送控制装置,其特征在于,具备保持数据的数据存储机构;保持数据的转送字数的转送字数存储机构;保持1个字数据的转送地的地址间隔的转送间隔存储机构;和在成组转送中,在上述转送间隔存储机构所保持的间隔下使上述总线的写入控制线处于有效的写入状态,在其他期间使其处于禁止写入状态,在上述写入控制线处于有效的写入状态下,转送上述转送字数存储机构所保持的字数的数据的总线周期控制机构。
在上述数据转送控制装置中,优选还具备保持总线周期的起始地址的周期起始地址保持机构;在禁止写入状态下的数据转送中,在从上述设备通知中断数据转送时,计算第2数据转送地的地址的重开地址计算机构;和在禁止写入状态下的数据转送中,从上述设备通知中断数据转送时,将上述重开地址计算机构计算出的地址转送到上述周期起始地址保持机构,并从上述周期起始地址保持机构所存储的地址开始产生新的总线周期的中断周期重开机构。
在上述数据转送控制装置中,优选还具备保持目标设备的设备应答速度的应答速度存储机构;比较从上述转送间隔存储机构与上述应答速度存储机构的值,利用成组转送而来的数据转送速度及向转送地地址反复转送1个字的数据的数据转送速度的转送速度比较机构;和在利用上述转送速度比较机构得出成组转送比向转送地地址反复转送1个字的数据的数据转送还快时,选择成组转送,不快时选择向转送地地址的1个字数据转送总线周期的重复操作的转送形式选择机构。
在上述数据转送控制装置中,优选上述总线周期控制机构在上述写入控制线处于禁止写入的状态时,将要转送的下一个字数据驱动到数据线。
本发明的其他的数据转送控制装置,其特征在于,具备在总线的写入控制线处于禁止写入状态下接受数据写入操作时,比上述写入控制线处于有效写入状态时还早地通知受理数据的总线应答机构。
本发明的其他的数据转送控制装置,其特征在于,具备保持数据转送地的地址的间隔的存储机构;在总线的写入控制线处于禁止写入状态下接受数据的转送操作时,从存储于上述存储机构的值求出上述写入控制线成为许可写入状态的下一个地址,并将驱动到数据线的信号的值写入上述地址的控制机构。
本发明的其他的数据转送控制装置,是一种与总线连接,并控制向上述总线上的设备转送数据的数据转送控制装置,其特征在于,具备保持数据的数据存储机构;保持数据的转送字数的转送字数存储机构;保持不进行数据转送的地址间隔的非转送间隔存储机构;和在成组转送中,在上述非转送间隔存储机构所保持的间隔下使上述总线的写入控制线处于禁止写入状态,在其他期间使其处于有效写入状态,在上述写入控制线处于有效的写入状态下,转送上述转送字数存储机构所保持的字数的数据的总线周期控制机构。
本发明的数据转送控制方法,是一种控制向总线上的设备转送数据的方法,其特征在于,具备保持数据的数据存储工序;保持数据的转送字数的转送字数存储工序;保持转送数据的地址间隔的转送间隔存储工序;和在成组转送中,在上述转送间隔存储工序所保持的间隔下使上述总线的写入控制线处于有效写入状态,在其他期间使其处于禁止写入状态,在上述写入控制线处于有效的写入状态下,转送上述转送字数存储工序所保持的字数的数据的总线周期控制工序。


图1是表示第1实施方式的数据转送控制装置的图。
图2是表示图1所示装置的动作流程的图。
图3A是图1所示装置的时间图。
图3B是图1所示装置的时间图。
图4是表示图1所示装置的存储内容表的图。
图5是表示第2实施方式的数据转送控制装置的图。
图6是表示图5所示装置的动作流程的图。
图7是图5所示装置的时间图。
图8A是用于表示第2实施方式的效果的时间图。
图8B是用于表示第2实施方式的效果的时间图。
图9是表示第3实施方式的数据转送控制装置的图。
图10是图9所示装置的时间图。
图11是用于表示第3实施方式的效果的时间图。
图12是表示第4实施方式的数据转送控制装置的图。
图13是图12所示装置的时间图。
图14是用于表示第4实施方式效果的时间图。
图15是表示第5实施方式的数据转送控制装置的图。
图16是图15所示装置的时间图。
图17是表示第6实施方式的数据转送控制装置的图。
图18是图17所示装置的时间图。
图19是表示以往的数据转送控制装置的图。
图20A是图19所示装置的时间图。
图20B是图19所示装置的时间图。
图中101-PCI主设备,102-转送地起始地址寄存器,103-转送字数寄存器,104-数据缓冲器,105-周期控制部,105a-成组转送控制部,105b-数据更新部,105c-中断周期重开部,105d-BE线无效化部,105e-重开地址计算部,105f-1个字数据转送控制部,106-转送起始寄存器,107-PCI总线接口,108-周期起始地址寄存器,109-转送字数计数器,110-增量部,111-比较部,112-计数器初始化部,113-转送间隔寄存器,114-转送间隔计数器,115-增量部,116-比较部,117-计数器初始化部,118-DEVSEL#应答信息寄存器,119-转送速度比较部,120-转送形式选择部,140-PCI目标设备,141-PCI总线接口,142a-地址译码器,142b-确认信号控制部,142c-字节启动译码器,142d-先行写入控制部,143-数据寄存器,144-地址寄存器,145-字节启动寄存器,146-存储器,147-先行写入地址计算部,148a-先行数据转送信息寄存器,148b-数据转送间隔信息寄存器,149-先行写入信息寄存器,160-CPU,170-存储器,180-PCI总线,180a-AD线,180b-C_BE#线,180c-FRAME#线,180d-IRDY#线,180e-TRDY#线,180f-DEVSEL#线,180g-STOP#线,190-总线请求线,191-总线许可线。
实施方式以下参照

本发明的实施方式。图中相同或者相当部分采用同一符号,并且不重复说明。
(第1实施方式)在本实施方式中,说明即使向等间隔隔开的地址分别转送1个字数据时,也可以利用成组转送,高速转送多个字数据的数据转送控制装置。即,从进行写入的起始地址开始成组转送,在指定的时钟周期期间内使总线处于禁止写入状态,然后在进行写入的时刻使总线恢复到能够写入的状态,再次反复进行在指定的时钟周期期间内使总线处于禁止写入状态的操作,直至所有数据转送完毕。由此,能够向等间隔隔开的地址进行数据的成组转送。
图1是本发明的第1实施方式的数据转送控制装置。
PCI局部总线(以下称为PCI总线)的主设备101支持将多个字的数据在一个总线周期内向连续地址转送即所谓成组转送,若发生向转送起始寄存器106的写入,则从转送地起始地址寄存器102所设定的成组转送的转送地的起始地址开始,只成组转送转送字数寄存器103所示字数的存储于数据缓冲器104内的数据。在该成组转送中,若第1次数据转送结束,则在由存储于转送间隔寄存器113的值所指定的期间内,通过使PCI总线180的命令·字节启动线(C_BE#线)180b的4个字节各自的指定写入许可/禁止的各个位均为1即处于无效状态,从而使得PCI目标设备140不能向存储器146写入数据。然后,使C_BE#线180b的所有位的值均为0,进行第2次数据转送。接着,再次在由存储于转送间隔寄存器113的值所指定的期间内,使C_BE#线180b全部为1。反复进行,直到转送完转送字数寄存器103所示字数的数据。
在转送地起始地址寄存器102中,可以利用软件从CPU160设定成组转送的转送地起始地址。
在转送字数寄存器103中,可以利用软件从CPU160设定要转送数据的字数。
数据缓冲器104保持要向PCI目标设备140转送的数据,可以以1次转送操作读出由转送字数寄存器103所指定字数的数据。另外,其起始数据在PCI总线周期运行中被驱动到AD线180a。
若向转送起始寄存器106进行转送开始的写入,则周期控制部105利用总线请求信号线190要求PCI总线180的使用权,根据总线许可信号线191的确证(assert)获得PCI总线180的使用权后,利用成组转送控制部105a开始成组转送,首先,在地址相内,通过周期起始地址寄存器108将转送地起始寄存器102中设定的地址驱动到AD线180a,接着在第1数据相内将存储在数据缓冲器104中的第1数据驱动到AD线180a,若数据转送结束,则利用增量部110增加转送字数计数器109的值,增加周期起始地址寄存器108的值,利用增量部115增加转送间隔计算器114的值,从数据缓冲器104清除第1数据并进行更新,如果转送字数计数器109与转送字数寄存器103的值一致,则将转送字数计数器109与转送间隔计数器114初始化为0后结束,如果不一致则利用比较部116比较转送间隔计数器114与转送间隔寄存器113的值,若一致则利用计数器初始化部117将转送间隔计数器114初始化为0,接下来,在第2数据相内,如果转送间隔计数器114的初始值为0,则将C_BE#线180b设定为有效值,若数据转送结束,则利用增量部110增加转送字数计数器109的值,增加周期起始地址寄存器108的值,利用增量部115增加转送间隔计算器114的值,从数据缓冲器104清除第2数据并进行更新,若从比较部111接受关于转送字数计数器109与转送字数寄存器103的值一致的通知,则将转送字数计数器109与转送间隔计数器114初始化为0后结束,如果转送间隔计数器114的值不为初始值0,则利用BE#线无效化部105d将C_BE#线180b全部设定为1即无效值,若数据转送结束,则增加周期起始地址寄存器108的值,利用增量部115增加转送间隔计算器114的值,接着在第3以后的数据相内,反复进行与第2数据相相同的操作,直到C_BE#线180b全部设定为0而转送完的数据字数与转送字数寄存器103的值一致为止。还有,在利用目标设备中断成组转送时,利用中断周期重开部105c等待2个时钟周期后,控制周期控制部105以重新开始周期。
成组转送控制部105a控制向PCI总线180的成组转送。
若写入有效的数据转送结束,则数据更新部105b从数据缓冲器104删除转送完的数据,更新存储于数据缓冲器104内的数据。被更新的数据输出到总线上。
中断周期重开部105c在利用PCI目标设备140中断了总线周期时,等待2个时钟周期的时间后,通过PCI总线接口107重新开始总线周期。
BE线无效化部105d,在数据相内,在转送间隔计数器114的值不为0时,使C_BE#线180b为无效值即全为1,并在该数据相结束时,向数据更新部105b通知不更新数据缓冲器104的数据。
若向转送起始寄存器106写入开始转送的指示时,则周期控制部105开始成组转送。
PCI总线接口107控制作为PCI主设备的PCI总线180。
在周期起始地址寄存器108中,在开始成组转送的情况下,复制转送地起始地址寄存器102的值,另外,在向PCI目标设备140的成组转送没有连接上时,保持重新开始总线周期的地址。
转送字数计数器109对所转送的数据的字数进行计数。
若成组转送结束,则增量部110将转送字数寄存器109初始化。
比较部111比较转送字数计数器109的值和转送字数寄存器103的值,一致时意味着要转送的数据字数与已经转送的数据字数相等,在通知周期控制部105的同时,利用计数器初始化部112将转送字数计数器109初始化,再有,在转送字数计数器109比转送字数寄存器103还小1时,则只通知周期控制部105。周期控制部105从比较部111得到关于转送字数计数器109的值与转送字数寄存器103的值一致的通知时,向PCI总线接口107发出结束PCI总线周期的通知,在得到转送字数计数器109比转送字数寄存器103还小1的通知时,向PCI总线接口107发出未确证(deassert)FRAME#线180c,并在下一个数据相结束成组转送的通知。
若由比较部111判断转送字数寄存器103与转送字数计数器109的值一致,则计数器初始化部112将转送字数计数器109初始化。
可以从CPU利用软件在转送间隔寄存器113中设定要转送数据的转送地地址的间隔,在转送完1个字份写入的数据后,接着进行不连续写入n个字的数据转送时,该值为(n+1)。
转送间隔计数器114是对进行1个字的数据写入后不进行几个字的数据写入的数据转送进行计数,在成组转送中,每当数据相结束就利用增量部115使该值增加,当该值与转送间隔寄存器113的值一致时,以及总线周期结束时,利用计数器初始化部117写入初始值0,在该值为0时,利用周期控制部105将C_BE#线180b设定为有效值并转送数据。
增量部115在成组转送中,每当数据相结束就使转送间隔计数器114的值增加。
比较部116比较转送间隔寄存器113和转送间隔计数器114的值,如果一致,则通知周期控制部105和计数器初始化部117,再有当转送间隔计数器114比转送间隔寄存器113还小1时,则只通知周期控制部105。
若计数器初始化部117从比较部116收到关于转送间隔寄存器113与转送间隔计数器114的值一致的通知时,则将转送间隔计数器114初始化为0。
若PCI目标设备140通过PCI总线180从PCI主设备101转送数据时,则除了在PCI总线周期的各数据相内使C_BE#线180全部为1的情况以外,都将数据存储于存储器146内。
PCI总线接口141控制作为PCI目标设备的PCI总线180。此时,TRDY#180e的确证(assert)是从确认信号(acknowledge signal)控制部142b接受确认信号后才进行的。
存储器写入控制部142控制从PCI总线180向存储器146的写入。
地址译码器142a在PCI总线180的地址相获取被驱动到AD线180a的地址并进行译码,分析是否为分配给PCI目标设备140的地址,在是的情况下,通知PCI总线接口141去应答PCI总线周期,并利用存储器写入控制部142使存储器146执行写入操作。
若利用存储器写入控制部142完成向存储器142的写入操作,则确认信号控制部142b向PCI总线接口141发出确认信号。
数据寄存器143是为了将从PCI总线180转送来的数据写入内部存储器146而暂时存放数据的寄存器。
地址寄存器144是用于存储与PCI总线180的各数据相相对应的地址的寄存器。
字节启动寄存器(byte enable register)145是保持4位数值的寄存器,在向存储器146写入4个字节时,只对与各字节对应的位等于0的字节位置进行写入操作。
存储器146按照保持在字节启动寄存器145内的值,将从PCI主设备101转送来并暂时存放在数据寄存器143的数据存储到地址寄存器144的值所表示的地址的位置。
CPU160将存储器170作为主存储器利用,在从PCI主设备101向PCI目标设备140进行成组转送时,在转送地起始地址寄存器102内设定转送起始地址,在转送间隔寄存器113内设定转送间隔,在转送字数寄存器103内设定转送字数,最后在转送起始寄存器106中写入转送开始,启动成组转送。
存储器170作为CPU160的主存储器使用。
PCI总线180具有32位的地址·数据线(AD线)180a、4位的命令·字节启动线(C_BE#)180b、1位的帧线(FRAME#线)180c、起动器·准备线(IRDY#线)180d、目标·准备线(TRDY#线)180e、设备·选择线(DEVSEL#线)180f、停止线(STOP#线)180g,与PCI主设备101、PCI目标设备140、CPU160、存储器170连接。
总线请求线190是PCI主设备110向CPU160请求PCI总线180的总线使用权用的信号线。
图2表示本实施方式的动作流程。
在步骤ST201中,从CPU160通过PCI总线180设定转送地起始地址寄存器102,然后进入步骤ST202。
在步骤ST202中,从CPU160通过PCI总线180设定转送字数寄存器103,然后进入步骤ST203。
在步骤ST203中,从CPU160通过PCI总线180设定转送间隔寄存器113,然后进入步骤ST204。
在步骤ST204中,从CPU160通过PCI总线180设定转送起始寄存器106,然后进入步骤ST205。
在步骤ST205中,利用周期控制部105,将转送地起始地址寄存器102的值转送到周期起始地址寄存器108,然后进入步骤ST206。
在步骤ST206中,PCI主设备101确证总线请求线190,向CPU160请求PCI总线180的总线使用权,CPU160确证总线请求线191,对PCI主设备101许可PCI总线180的总线使用权,从而PCI主设备101获得PCI总线180的总线使用权,然后进入步骤ST207。
在步骤ST207中,利用PCI总线接口141,开始PCI总线周期,运行地址相,将周期起始地址寄存器108a的值作为地址驱动到PCI总线180的AD线180a,向C_BE#线180b发出存储器写入命令,然后进入步骤ST208。
在步骤ST208中,利用周期控制部105,判断转送间隔计数器114的值是否为0,如果为0,则进入步骤ST209,如果不为0,则进入步骤ST219。
在步骤ST209中,利用比较部111、116、周期控制部105,判断是否为最终数据相,如果是最终数据相,则进入步骤ST210,如果不是,则进入步骤ST211。
在步骤ST210中,利用PCI总线接口107,确证非FRAME#线180c,并通知是最终数据相,然后进入步骤ST211。
在步骤ST211中,利用PCI总线接口107,使C_BE#线180b为有效值,将数据缓冲器104的起始数据驱动到AD线180a,运行数据相,然后进入步骤ST212。
在步骤ST212中,利用PCI总线接口107,一直等待到TRDY#或STOP#得以确证,若其中任一个得到确证,则进入步骤ST213。
在步骤ST213中,利用PCI总线接口107,在步骤ST212中确证了TRDY#时,判断数据转送已经完成,进入步骤ST214,如果在步骤ST212只确证了STOP#而没有确证TRDY#时,判断没有完成数据转送,进入步骤ST224。
在步骤ST214中利用增量部110,增加转送字数计数器109,然后进入步骤ST215。
在步骤ST215中,利用周期控制部105,将周期起始地址寄存器108的值增加作为PCI的总线宽度的4个字节数,然后进入步骤ST216。
在步骤ST216中,利用增量部115,增加转送间隔计数器114的值,然后进入步骤ST217。
在步骤ST217中,利用数据更新部105b,从数据缓冲器104删除已经转送完毕的数据,然后进入步骤ST218。
在步骤ST218中,利用比较部111,比较转送字数寄存器103和转送字数计数器109的值,如果一致,则进入步骤ST228,如果不一致,则进入步骤ST224。
在步骤ST219中,利用BE线无效化部105d以及PCI总线接口107,使C_BE#线180b为无效值即全部为1,将数据缓冲器104的起始数据驱动到AD线180a,并运行数据相,然后进入步骤ST220。
在步骤ST220中,一直等待到TRDY#或STOP#得到确证为止,若其中任一个得到确证,则进入步骤ST221。
在步骤ST221中,在步骤ST220中确证了TRDY#时,判断数据转送已经完成,进入步骤ST222,在步骤ST220中只确证了STOP#而没有确证TRDY#时,判断没有完成数据转送,进入步骤ST224。
在步骤ST222中,利用周期控制部105,将周期起始地址寄存器108的值增加作为PCI的总线宽度的4个字节数,然后进入步骤ST223。
在步骤ST223中,利用增量部115,增加转送间隔计数器114的值,然后进入步骤ST224。
在步骤ST224中,利用比较部116,比较转送间隔寄存器113和转送间隔计数器114的值,如果一致,则进入步骤ST225,如果不一致,则进入步骤ST226。
在步骤ST225中,利用计数器初始化部117,将转送间隔计数器114初始化,然后进入步骤ST226。
在步骤ST226中,在利用STOP#线180g的确证来中断总线周期时,返回步骤ST206,不是的情况下则进入步骤ST208。
在步骤ST228中,利用计数器初始化部112,将转送字数计数器109初始化为0,然后进入步骤ST229。
在步骤ST229中,利用计数器初始化部117,将转送间隔计数器114初始化为0,然后结束成组转送处理。
接着,利用数据例来说明本实施方式的动作。
图3A表示从时帧T0至T11向存储器146的40000000号地址转送数据1的时间图,图3B表示从时帧T11至T15向存储器146的40000008号地址转送数据2的时间图。在本图中,PCI主设备101通过PCI目标设备140,利用成组转送首先向存储器146的40000000号地址转送数据1,接着在40000004号地址使C_BE#线为无效值并转送数据2,最后向40000008号地址转送数据2。
图中300a表示以1个时钟周期为单位的时帧;300b表示运行PCI总线180的总线周期的起动器;300c表示PCI总线180的状态;301a表示时钟线(CLK)的状态;301b表示总线请求线(REQ#)190的状态;301c表示总线许可线(GNT#)191的状态;302表示地址·数据线(AD)180a的状态;303表示命令·字节启动线(C_BE#)180b的状态;304表示FRAME#线180c的状态;305表示IRDY#线180d的状态;306表示TRDY#线180e的状态;307表示DEVES#线180f的状态;
308表示转送字数寄存器103的值;309表示转送字数计数器109的值;310表示转送间隔寄存器113的值;311表示转送间隔计数器114的值;312表示转送起始地址寄存器102的值;313表示数据缓冲器104的起始2个字的数据;313a表示数据缓冲器104的起始1个字的数据;313b表示数据缓冲器104的第2个的1个字的数据;314表示地址译码器142a的状态;315表示地址寄存器144的值;316表示数据寄存器143的值;317表示字节启动寄存器145的值;318表示存储器146的40000000号地址的值;319表示存储器146的40000004号地址的值;320表示存储器146的40000008号地址的值。
另外,PCI目标设备140为低速应答的设备。即,是在地址相的3个周期后确认DEVSEL#线180f的设备。再有,存储器146为在PCI总线180的1个时钟周期的时间内完成写入的存储器,与此相对应,确认信号控制部142b利用地址译码器142a对地址进行完译码后,不必等待就可以向PCI总线接口141输出。
各存储器以及各寄存器的存储内容表如图4所示。
以下,利用图3A、图3B,按照时帧300a所纪录的时刻顺序说明动作。
(T0)PCI总线180处于空闲状态。
如313所示,要转送到数据缓冲器104的分别为1个字的2个数据,即数据1和数据2按该顺序存储。
在转送计数计数器109、转送间隔计数器114中,分别如309、311所示保持初始值0。
(T1-T5)
在从步骤ST201到步骤ST205的处理中,利用来自CPU160的写入,如308所示转送字数寄存器103设定为2,如310所示转送间隔寄存器113设定为2,如312所示转送起始地址寄存器102设定为40000000。
(T6-T7)接着,进入步骤ST206,如301b、301c所示,在时帧T6确证REQ#线190,并要求PCI总线180的使用权。在时帧T7 GNT#线191被确证,并且PCI主设备101获得使用权。
(T8)接着,进入步骤ST207,PCI总线180进入地址相。PCI总线接口107如302、303、304所示,将地址40000000驱动到AD线180a,将存储器·写入命令驱动到C_BE#线180b,通过确证FRAME#线180c,从而开始总线周期。
(T9)接下来,经过步骤ST208、209、210,进入步骤ST211,PCI总线180进入数据相。由于在时帧为T9时PCI目标设备140还没有应答,故数据转送不成立。
PCI目标设备140的地址译码器142a如314所示,开始对在T8被驱动到AD线180a的地址40000000进行译码。
PCI总线接口107如302、303、304所示,将AD线180a的值作为数据1,C_BE#线180b的值作为0000,并确证IRDY#线180d。
(T10)停留在步骤ST212,PCI总线180处于数据转送不成立的数据相。
(T11)如314所示,地址译码器142a结束对地址40000000的译码,PCI总线接口141如306、307所示,确证TRDY#线180e、DEVSEL#线180f,并进行作为目标设备的应答通知以及结束数据转送通知。
(T12)由于在前面的时帧T11,TRDY#线180e得到确证,经由步骤ST213进入步骤ST214。
如309所示,利用步骤ST214,转送字数计数器109的值增加为1。
接着,如311所示,经由步骤ST215,利用步骤ST216,转送间隔计数器114的值增加为1。
接下来,如313所示,利用步骤ST217,从数据缓冲器104删除作为起始数据的数据1,数据2成为起始数据。
如316所示,PCI目标设备140将在前面的时帧被驱动到AD线180a的数据1放入数据寄存器143。还有,如317所示,将被驱动到C_BE#线180b的值0000放入字节启动寄存器145。再有,如315所示,将地址40000000放入地址寄存器144。
接着,经由步骤ST218、ST224、ST226,返回步骤ST208,由于转送间隔计数器114的值不为0,故在步骤ST219中,BE线无效化部105d通知成组转送控制部105a使C_BE#线为无效值,如303所示,无效值1111被驱动到C_BE#线180b。
(T13)由于如317所示,在前面的时帧,字节启动寄存器145的值为0000,故存储器写入控制部142如318所示将数据寄存器143的值即数据1写入地址寄存器144所保持的值即40000000所表示的存储器146的地址。
PCI目标设备140增加地址寄存器144的值,使之为40000004,并将在前面的时帧驱动到AD线180a的数据2放入数据寄存器143。还有,将驱动到C_BE#线180b的值1111放入字节启动寄存器145。
另外,PCI目标设备140的PCI总线接口141在TRDY#180e的确证之后,向PCI主设备101通知最终数据相在该时帧结束的情况。
在PCI主设备101中,经由步骤ST220、ST221、ST222,在ST223增加转送间隔计数器114的值,在步骤ST224中,比较部116比较转送间隔寄存器113的值2与转送间隔计数器114的值2,由于二者一致,故进入步骤ST225,计数器初始化部117如311所示将转送间隔计数器114初始化为0。
经由步骤ST226返回步骤ST208,由于转送间隔计数器114的值为0,故进入步骤ST209,由于该数据相为最终数据相,故在步骤ST210中如304所示,非确证FRAME#线180c,并向PCI目标设备通知是最终数据相。
接下来,在步骤ST211中,如302、303所示,PCI总线接口107将数据2驱动到AD线180a,将全部0驱动到C_BE#线180b。
(T14)由于在前面的时帧,字节启动寄存器145的值为1111,故存储器写入控制部142不对地址寄存器144保持的值即40000004所表示的存储器的地址进行写入操作。
PCI目标设备140增加地址寄存器144的值,使之为40000008,将在前面的时帧驱动到AD线180a的数据2放入数据寄存器143。另外,将驱动到C_BE#线180b的值0000放入字节启动寄存器145。
如306所示,由于在前面的时帧确证了TRDY#线180e,故PCI主设备101经由步骤ST212进入步骤ST213、ST214、ST215、ST216,增加转送字数计数器109,使之为2,从数据缓冲器104删除数据2。再有,在步骤218中,由于转送字数寄存器103与转送字数计数器109的值一致,故进入步骤ST228、ST229,如309、310所示,并将这些初始化为0。
(T15)由于在前面的时帧,字节启动寄存器145的值为0000,故存储器写入控制部142如320所示将数据寄存器143的值即数据2写入地址寄存器144所保持的值即40000008所表示的存储器146的地址。
通过反复进行上述操作,本实施方式所示的PCI主设备101利用周期控制部105使C_BE#线180b为无效值并进行成组转送,从而可以向等间隔分离的地址进行高速数据转送。
(第2实施方式)在第1实施方式的PCI主设备的构成中,在成组转送中从目标侧利用断开应答而中断转送时,虽然被中断的转送可以从中断时的地址重新开始,但在重开时的地址为不进行写入的地址时,开始时的数据相则运行无用的数据相。因此,说明在本实施方式中,在重开数据转送时,在第1实施方式中追加了从下一个要进行有效数据转送的地址起始的功能的PCI主设备。
图5是本发明的第2实施方式的数据转送控制装置。图中,105e为重开地址计算部,在成组转送中由目标设备中断转送时,计算下一个进行有效数据转送的地址并写入周期起始地址寄存器108。该地址可以利用(周期起始地址寄存器的值)+{(转送间隔寄存器的值)-(转送间隔计数器的值)}×4来求出。
图6是表示本实施方式的动作流程的图。与第1实施方式的流程不同之处在于,在从步骤ST226返回步骤ST206时,追加了步骤ST227a和步骤ST227b的处理。
在步骤ST226中,在利用STOP#线180g的确证而中断了总线周期时,进入步骤ST227a,否则进入步骤ST208。
在步骤ST227a中,计算下一个进行有效数据转送的地址并设定于周期起始地址寄存器108内,然后进入步骤ST227b。
在步骤ST227b中,对转送间隔计数器114进行初始化,并返回步骤ST206。
图7是表示本实施方式的动作例的时间图。图中,321表示STOP#线180g的状态,322表示周期起始地址寄存器108的值。
在时帧T4,如321所示,由于STOP#线180g被确证,且存在来自PCI目标设备的断开应答,故如下一个时帧T5的304所示,非确证FRAME#线180c,进行总线周期的结束处理。在这里,如311所示,由于转送间隔计数器114的值为1,故在该下一个时帧T6利用重开地址计算机构105e,根据下式40000004+(2-1)×4计算下一有效地址,其结果的值40000008被转送到322所示的周期起始地址寄存器108。
总线周期重开后,如时帧T7的AD线180a的值所示,地址从有效数据转送的转送地地址40000008开始,数据则从中断转送时作为下一个写入的数据而存储于数据缓冲器104的起始数据开始,进行数据转送。
在重开地址计算部105e不存在时,如图8A、图8B所示,由于从C_BE#线180b的值为无效值1111开始重开数据转送(参照时帧T8),故数据2放入地址40000008的时帧为T13,刚好延迟1个时钟周期。
如上所示,由于本实施方式所示的PCI主设备101在数据转送中断时,从转送下一个要转送的数据的数据相开始重开总线周期,故可以实现高速数据转送。
(第3实施方式)在第1实施方式的PCI主设备的构成中,转送地的地址间隔越大,数据转送速度越慢。这种情况下,每转送完1个字的数据便先结束总线周期,然后立刻跳跃到下一个要转送数据的转送地地址,从该地址起重开总线周期,通过反复进行此操作来转送所有的数据的方法,加快数据转送速度。在本实施方式中,说明从该数据转送方法和第1实施方式所示的数据转送方法这两种方法中选择可以始终进行高速转送的方法的PCI主设备。
图9是本发明的第3实施方式的数据转送控制装置。图中,105f为1个字数据转送控制部,在利用转送形式选择部120判断为在每个字各自的总线周期内转送所有数据时,只让转送1个字的数据的总线周期(以下,称为1个字数据转送总线周期)发生转送字数寄存器103所存储的转送字数的次数。此时,由于PCI总线为32位总线,即4个字宽的总线,且各数据的转送地地址之间只相隔用(转送间隔寄存器113的值)×4所得的值的距离,故第2次以后的地址是将该值与周期起始地址寄存器108的值相加后作为下一个周期的转送地地址。
在DEVSEL#应答信息寄存器118中,根据目标设备DEVSEL#的应答速度来设定其值。当在地址相的下一个时帧确证DEVSEL#时,即,应答速度为高速时,由于不会因DEVSEL#的应答延迟而在1个字数据转送总线周期的总线周期间产生延迟,故设定为0,当应答速度比高速时慢1个时钟周期时,即应答速度为中速时,由于1个字数据转送总线周期的总线周期间发生的延迟发生1个时钟周期份,所以设定为1,当再延迟1个时钟周期的低速时,设定为2。在为比这还要延迟1个时钟周期的减法·译码(subtractive·decoding)的设备时,则设定为3。
转送速度比较部119,从比1个字数据转送总线周期还提前2个总线周期的总线周期中完成数据转送后,至在其后的总线周期完成数据转送之前的时钟周期数中减去进行成组转送时使先行的数据写入有效化的数据转送完成后,至使其后的数据写入有效化的数据转送完成之前的时钟周期数,将所得差值通知转送形式选择部120。此时,由于1个字数据转送总线周期的总线周期间的时钟周期数成为前次数据转送后的PCI总线的空闲相的1个周期、地址相的1个周期、DEVSEL#的应答延迟值即DEVSEL#应答信息寄存器118的值和进行下一个数据转送的数据相的1个周期,故其结果为DEVSEL#应答信息寄存器118的值再加3所得的值。因此,从该值减去转送间隔寄存器113的值,并将结果通知转送形式选择部120。图10为表示本实施方式的动作例的时间图。在该图中,时帧T1及T4为地址相,分别在其后的时帧T2及T5,如307所示确证了DEVSEL#,表示DEVSEL#应答速度为高速的情况。若在时帧T2第1次的1个字数据转送总线周期的数据转送结束,则在时帧T3总线暂且进入空闲相。而且,在时帧T4再次进入第2次的1个字数据转送总线周期的地址相,在时帧T5结束第2次数据转送。即,此时DEVSEL#应答速度为高速,DEVSEL#应答信息寄存器118的值为0,在比1个字数据转送总线周期还提前2个总线周期的总线周期的数据转送完成后,到其后的总线周期的数据转送完成的时钟周期数为3个周期。如310的转送间隔寄存器113的值4所示,此时利用转送速度比较器119所求出的值是从3中减去4等于-1,该值被通知到转送形式选择部120。
由于在从转送速度比较部119通知的值为1以上时,利用成组转送的速度快,故转送形式选择部120通知成组转送控制部105a进行数据转送。在为其他情况时,由于连续启动1个字数据转送总线周期进行数据转送时的速度较快,故转送形式选择部120通知1个字数据转送控制部105f进行数据转送。
另外,本实施方式中,PCI目标设备140的DEVSEL#应答为高速。
如图10的310所示,由于转送间隔寄存器113的值为4,PCI目标设备140的DEVSEL#应答为高速,转送速度比较部119的计算结果为-1,小于1,故转送形式选择部120判断反复进行1个字数据转送总线周期,在时帧T1、T2所示的第1次的1个字数据转送总线周期与时帧T4、T5所示的第2次的1个字数据转送总线周期内完成2个数据转送。
在该数据转送中,当转送形式为成组转送时,如图11所示,由于在PCI总线上完成最后的数据转送是在时帧T6,故延迟1个周期。
如上所述,由于本实施方式所示的PCI主设备101从数据转送间隔值和DEVSEL#应答速度,对1个字数据转送总线周期的数据转送间周期数与成组转送的数据转送间周期数进行比较,可以在利用地址跳跃的1个字数据转送总线周期的重复与成组转送之间选择速度一直高的转送形式。
(第4实施方式)当与PCI目标设备连接的存储器是写入速度比用PCI总线转送数据的速度还慢的设备时,通过在成组转送中延缓确认的方式来加入等待。本实施方式设想以该存储器的写入速度为决定速度,与第1实施方式所说明的构成相比,在成组转送时需要2倍的转送时间的系统。说明在此基础上在C_BE#线全为1时不进行写入的数据相中删除等待周期,且高速化数据转送数据的PCI目标设备。
图12为本发明的第4实施方式的数据转送控制装置。图中,142c为字节启动译码器,若通过PCI总线接口141接受C_BE#线180b的值,则检验该值是否为写入无效值即1111,在为1111的情况下通知ACK控制部142b立刻让PCI总线接口141确证TRDY#线180e。ACK控制部142b接收到该通知后,立刻让PCI总线接口141确证TRDY#线180e。
另外,本实施方式中,存储器146为慢速设备,写入时需要相当PCI时钟的2个周期的时间,PCI总线接口141在各数据相中加入1个时钟周期的等待。
图13是表示本实施方式的动作例的时间图。图中,324为从确认信号控制部142b向PCI总线接口141的确认信号,若该信号被确证为1,则PCI总线接口在同一时帧立刻将TRDY#线180e确证为0。由于存储器146为写入需要2个周期的设备,故虽然确认信号经过1个时钟周期的间隔才被确证,但在字节启动译码器142c判断C_BE#线180b的值为1111时,由于没有发生对存储器146的写入,故如324所示,即使在时帧T6之后的时帧T7也被确证。结果,在时帧T6、T7连续确证TRDY#线180e。在PCI目标设备140中没有字节启动译码器142c时,如图14所示,由于在时帧T7没有确证确认信号,故数据转送延迟。
如上所述,由于本实施方式所示的PCI目标设备140在没有发生对存储器146的实际写入的时刻,在PCI总线上不加入等待,故可以高速化数据转送。
(第5实施方式)在第4实施方式说明的PCI目标设备中,若C_BE#线的值为1,且不进行数据写入的数据相加入,则其间PCI目标设备不对存储器进行写入处理。即,一直等待到C_BE#线的值为有效值才进行下一个写入。在本实施方式中说明,与第4实施方式同样,存储器146为慢速设备,写入时需要相当于PCI时钟的2个周期份的时间,PCI总线接口141在各数据相中加入1个时钟周期份的等待,在第4实施方式所示的PCI目标设备中追加在C_BE#线的值全为1的时间内更新写入地址,直至下一个数据转送为有效的地址为止,并将驱动到AD线的下一个应该写入的数据提前在存储器内写入的功能,从而缩短到C_BE#线的值为有效值为止的存储器写入的等待时间的PCI目标设备。
图15是本发明的第5实施方式的数据转送控制装置。
先行写入控制部142d,在向先行数据转送信息寄存器148a写入1时,先行写入信息寄存器149的值为0,在发生了有效数据转送的时帧的下一个时帧,且C_BE#线180b为1111时,将先行写入地址计算部147所保持的值写入地址寄存器144,同时通知存储器写入控制部142对存储器146进行写入处理,向先行写入信息寄存器149写入1。在先行写入信息寄存器149的值为1时,通知存储器写入控制部142不对存储器146进行写入。还有,C_BE#线180b为有效值且完成了数据转送时,在先行写入信息寄存器149内写入0。
在发生了有效数据转送的时帧的下一个时帧,且C_BE#线180b为1111的情况下,由于PCI总线为32位即4个字节宽,故先行写入地址计算部147利用(数据转送间隔信息寄存器148b的值)×4再加上地址寄存器144的值来求出下一个转送有效数据的地址并将其保持。
当PCI主设备在C_BE#线为1111的时帧向AD线驱动下一个要转送的有效数据时,从CPU160向先行数据转送信息寄存器148a中写入1。
在数据转送间隔信息寄存器148b中,可以从CPU160设定使C_BE#线为写入有效值的数据相的间隔。
先行写入信息寄存器149的值为1时,表示相对于存储器146,C_BE#线在处于1111的状态下,正将被AD线确证的值写入下一个要转送的地址的情况。
图16是表示本实施方式的动作例的时间图。图中,325表示先行数据转送信息寄存器148a的值;326表示数据转送间隔信息寄存器148b的值;327表示先行写入信息寄存器149的值。
本实施方式中,如325所示,在先行数据转送信息寄存器149中写入1,在C_BE#线180b为1111时,PCI主设备将下一个要进行有效数据转送的数据驱动到AD线180a。
另外,如326所示,在数据转送间隔信息寄存器148b中写入与转送间隔寄存器113相同的值2。
在时帧T6,若C_BE#线180b被确证为1111,则在下一个时帧T7,先行写入地址计算部147利用下式(数据转送间隔寄存器148b的值)×4计算转送有效数据的地址,即,在地址寄存器315于前面时帧所保持的值即40000000上加8得到40000008,先行写入控制部142d如315所示将该值写入地址寄存器144。存储器写入控制部142开始向存储器146的地址40000008写入数据2,在时帧T9完成写入。如327所示,由于在时帧T7向先行写入信息寄存器149写入1,故实际上在字节启动寄存器145变为0000的时帧T8,没有发生向存储器146的写入。
如图13所示,在PCI目标设备140中没有先行写入控制部142d时,由于在时帧T10完成向40000008号地址的写入,故本实施方式可以提早1个时钟周期完成数据的写入。
如上所述,本实施方式所示的PCI目标设备140在C_BE#线为无效值的时间内先行进行向存储器146的实际写入,故可以高速化数据转送。
(第6实施方式)虽然在第1实施方式中示出在数据转送地的地址间存在一定间隔时能进行成组转送的数据转送控制装置,但在本实施方式中示出在一系列数据转送地经过一定的间隔且存在不转送数据的地址时,能进行成组转送的数据转送控制装置。
图17是本发明的第6实施方式的数据转送控制装置。与第1实施方式不同之处在于,周期控制部105被周期控制部1705所取代,转送间隔寄存器113在本实施方式中被非转送间隔寄存器1713所取代,转送间隔计数器114在本实施方式中被非转送间隔寄存器1714所取代。
周期控制部1705与第1实施方式的周期控制部105的动作不同之处在于,若转送间隔计数器114的值为初始值0,则周期控制部105将C_BE#线设定为有效值,与此对应,若非转送间隔计数器1714的值为初始值0,则利用C_BE#线无效化部105d将C_BE#线设定为无效值,若转送间隔计数器114的值不是初始值,则周期控制部105利用BE#线无效化部105d将C_BE#线设定为无效值,与此对应,若非转送间隔计数器1714的值不是初始值,则将C_BE#线设定为有效值。
非转送间隔寄存器1713可以从CPU160通过软件设定不转送数据的地址的间隔。
每当成组转送中结束数据相,就利用增量部115对非转送间隔计数器1714进行累加,在其值与非转送间隔寄存器1713的值一致时及总线周期结束时,利用计数器初始化部117写入初始化值0,在其值为0时利用周期控制部105将C_BE#线设定为无效值。
图18是表示本实施方式的动作例的时间图的图。在图中313表示数据缓冲器104的起始4个字的数据;313a表示数据缓冲器104的第1个字的数据;313b表示数据缓冲器104的第2个字的数据;313c表示数据缓冲器104的第3个字的数据;313d表示数据缓冲器104的第4个字的数据;1810表示非转送间隔寄存器1713的值;1811表示非转送间隔计数器1714的值。
在本实施方式中,由于在非转送间隔寄存器1713中设定为3,在时帧T2至T4表示的3次有效数据相之后,在时帧T5发生一次C_BE#线成为1111的数据相。
(发明效果)如上所述,根据本发明的数据转送控制装置,在所规定间隔以下向等间隔分离的地址每次1个字转送多个字的数据时,在转送地的地址不连续的两个1个字数据之间,通过一边使上述总线的写入控制线处于禁止写入状态,一边插入数据的写入动作,从而成组转送进行的数据转送成为可能,比利用单转送的反复操作的数据转送还能高速转送数据。
另外,在总线的写入控制线的禁止写入状态下的数据写入动作中通知了中断数据转送时,通过从下一个要转送数据的地址重新开始总线周期,进行第2数据的转送,可以省略无用的数据相,能够高速转送数据。
还有,在依次转送转送地的地址为不连续的第1数据和第2数据时,通过比较在2个数据转送之间一边使上述总线的写入控制线处于禁止写入状态,一边通过插入数据的写入动作的第1数据转送形式与在第1数据转送后先结束总线周期,从下一个要转送数据的地址起重新开始总线周期转送第2数据的第2数据转送形式的所需时间,采用所需时间不长的数据转送形式来转送数据,从而能够总是选择最快的数据转送形式。
再有,在写入控制线处于写入禁止状态时,主设备向数据线驱动下一个要转送的数据,目标设备通过先行受理数据,从而能够实现数据转送的高速化。
权利要求
1.一种数据转送控制装置,其与总线连接,并控制向上述总线上的设备转送数据,其特征在于,具备一边将上述总线的写入控制线维持在禁止写入的状态,一边进行数据写入操作的总线周期控制机构。
2.一种数据转送控制装置,其与总线连接,并控制向上述总线上的设备转送数据,其特征在于,具备保持数据的数据存储机构;保持数据的转送字数的转送字数存储机构;保持1个字数据的转送地的地址间隔的转送间隔存储机构;和在成组转送中,在上述转送间隔存储机构中保持的间隔下使上述总线的写入控制线处于有效的写入状态,在其他期间使其处于禁止写入状态,在上述写入控制线处于有效的写入状态下,转送保持于上述转送字数存储机构内的字数的数据的总线周期控制机构。
3.根据权利要求2所述的数据转送控制装置,其特征在于,还具备保持总线周期的起始地址的周期起始地址保持机构;在禁止写入状态下的数据转送中,从上述设备通知数据转送的中断时,计算第2数据转送地的地址的重开地址计算机构;和在禁止写入状态下的数据转送中,从上述设备通知数据转送的中断时,将上述重开地址计算机构所计算的地址转送到上述周期起始地址保持机构,从存储于上述周期起始地址保持机构内的地址开始产生新的总线周期的中断周期重开机构。
4.根据权利要求2所述的数据转送控制装置,其特征在于,还具备保持目标设备的设备应答速度的应答速度存储机构;比较从上述转送间隔存储机构与上述应答速度存储机构的值,利用成组转送而来的数据转送速度及向转送地地址反复转送1个字的数据的数据转送速度的转送速度比较机构;和在利用上述转送速度比较机构得出成组转送比向转送地地址反复转送1个字的数据的数据转送还快时,选择成组转送,不快时选择向转送地地址的1个字数据转送总线周期的重复操作的转送形式选择机构。
5.根据权利要求3所述的数据转送控制装置,其特征在于,还具备保持目标设备的设备应答速度的应答速度存储机构;比较从上述转送间隔存储机构与上述应答速度存储机构的值,利用成组转送而来的数据转送速度及向转送地地址反复转送1个字的数据的数据转送速度的转送速度比较机构;和在利用上述转送速度比较机构得出成组转送比向转送地地址反复转送1个字的数据的数据转送还快时,选择成组转送,不快时选择向转送地地址的1个字数据转送总线周期的重复操作的转送形式选择机构。
6.根据权利要求2所述的数据转送控制装置,其特征在于,上述总线周期控制机构,在上述写入控制线处于禁止写入的状态时,将要转送的下一个字数据驱动到数据线。
7.根据权利要求3所述的数据转送控制装置,其特征在于,上述总线周期控制机构在上述写入控制线处于禁止写入的状态时,将要转送的下一个字数据驱动到数据线。
8.根据权利要求4所述的数据转送控制装置,其特征在于,上述总线周期控制机构在上述写入控制线处于禁止写入的状态时,将要转送的下一个字数据驱动到数据线。
9.一种数据转送控制装置,其特征在于,具有在总线的写入控制线处于禁止写入状态时接受数据写入操作的情况下,比上述写入控制线处于有效写入状态时还早地通知数据受理的总线应答机构。
10.一种数据转送控制装置,其特征在于,具备保持数据转送地的地址的间隔的存储机构;和在总线的写入控制线处于禁止写入状态下接受数据的转送操作时,从存储于上述存储机构的值求出下一个上述写入控制线成为许可写入状态的地址,并将驱动到数据线的信号的值写入上述地址的控制机构。
11.一种数据转送控制装置,其与总线连接,并控制向上述总线上的设备转送数据,其特征在于,具备保持数据的数据存储机构;保持数据的转送字数的转送字数存储机构;保持不进行数据转送的地址间隔的非转送间隔存储机构;和在成组转送中,在上述非转送间隔存储机构保持的间隔下使上述总线的写入控制线处于禁止写入状态,在其他期间使其处于有效写入状态,在上述写入控制线处于有效的写入状态下,转送上述转送字数存储机构所保持的字数的数据的总线周期控制机构。
12.一种数据转送控制方法,其控制向总线上的设备的数据转送,其特征在于,具备保持数据的数据存储工序;保持数据的转送字数的转送字数存储工序;保持转送数据的地址间隔的转送间隔存储工序;和在成组转送中,在上述转送间隔存储工序所保持的间隔下使上述总线的写入控制线处于有效写入状态,在其他期间使其处于禁止写入状态,在上述写入控制线处于有效的写入状态下,转送上述转送字数存储工序所保持的字数的数据的总线周期控制工序。
全文摘要
本发明提供一种在将1个字单位的数据写入等间隔分离的地址时,利用成组转送的写入方法,可以高速转送数据的转送控制方法及装置。在开始进行成组数据转送,数据相到达非转送地的地址时,使字节启动信号处于非确证状态,在数据相到达要转送数据的地址时,确证字节启动信号,只有在该数据相结束时才更新所要转送的数据,从而能够只向存在几个字间隔的转送地的地址转送数据。由此,多个数据的转送地地址即使存在1个字或几个字的间隔也能用一次总线周期转送多个数据。
文档编号G06F13/20GK1530845SQ20041003964
公开日2004年9月22日 申请日期2004年3月12日 优先权日2003年3月12日
发明者川口谦一 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1