COMMUNICATION CONTROLLER, COMMUNICATION METHOD, AND SYSTEM ON A CHIP
20190163662 ยท 2019-05-30
Inventors
- Xianpei ZHENG (Beijing, CN)
- Yang Shi (Beijing, CN)
- Zhongmin CHEN (Beijing, CN)
- Wei-Lin WANG (Beijing, CN)
- Jiin Lai (New Taipei City, TW)
Cpc classification
G06F15/7807
PHYSICS
International classification
Abstract
An optimized communication technique is provided. A communication controller has a retransmission list and a destination control logic circuit. The retransmission list records an identification number of a communication transaction that failed to transmit from a source module to a destination module. The destination control logic circuit manages the retransmission list. When a tracker is released from a queue of the destination module, the destination control logic circuit requests the source module to retransmit the communication transaction to the destination module according to the identification number recorded in the retransmission list.
Claims
1. A communication controller, comprising: a retransmission list, recording an identification number of a communication transaction that failed to transmit from a source module to a destination module; and a destination control logic circuit, managing the retransmission list, wherein when a tracker is released from a queue of the destination module, the destination control logic circuit requests the source module to retransmit the communication transaction to the destination module according to the identification number recorded in the retransmission list.
2. The communication controller as claimed in claim 1, further comprising: a waiting queue, recording contents of a communication transaction that failed to transmit from a source module and are temporarily stored and dynamically managed in a tracker of the queue of the destination module, wherein: the destination control logic circuit further manages the waiting queue; and when the queue of the destination module releases the tracker, the destination control logic circuit fills the released tracker with the contents of the communication transaction obtained from the waiting queue.
3. The communication controller as claimed in claim 2, wherein: the destination control logic circuit requests the source module to retransmit the communication transaction with the identification number recorded in the retransmission list to the destination module when the queue of the destination module releases the tracker and the released tracker is filled with the contents of the communication transaction obtained from the waiting queue.
4. The communication controller as claimed in claim 3, wherein: the destination control logic circuit temporarily stores contents of the retransmitted communication transaction in the waiting queue.
5. The communication controller as claimed in claim 4, wherein: when the retransmission list is not full but already has an identification number of a communication transaction recorded thereon, an identification number of a new communication transaction is added to the retransmission list by the destination control logic circuit; and when the retransmission list is not full and the waiting queue is full, an identification number of a new communication transaction is added to the retransmission list by the destination control logic circuit.
6. The communication controller as claimed in claim 5, wherein: when the waiting queue is not full but already has contents of a communication transaction loaded thereon, contents of a new communication transaction are added to the waiting queue by the destination control logic circuit; and when the waiting queue is not full and the queue is full, the contents of a new communication transaction are added to the waiting queue by the destination control logic circuit.
7. The communication controller as claimed in claim 4, wherein: in comparison with the waiting queue, the retransmission list is smaller in size and lower in power consumption; and compared to the queue, the waiting queue is smaller in size and lower in power consumption.
8. The communication controller as claimed in claim 1, wherein: the destination control logic circuit temporarily stores contents of the retransmitted communication transaction in the queue for dynamic management.
9. The communication controller as claimed in claim 8, wherein: when the retransmission list is not full but already has an identification number of a communication transaction recorded thereon, an identification number of a new communication transaction is added to the retransmission list by the destination control logic circuit; and when the retransmission list is not full and the queue is full, an identification number of a new communication transaction is added to the retransmission list by the destination control logic circuit.
10. The communication controller as claimed in claim 9, wherein: compared to the queue, the retransmission list is smaller in size and lower in power consumption.
11. A system on a chip, comprising: at least one source module; and at least one destination module, wherein each destination module has a communication controller as claimed in claim 1 to deal with at least one communication transaction transmitted from the at least one source module.
12. A communication method, comprising: using a retransmission list to record an identification number of a communication transaction that failed to transmit from a source module to a destination module; managing the retransmission list; and when a tracker is released from a queue of the destination module, requesting the source module to retransmit the communication transaction to the destination module according to the identification number recorded in the retransmission list.
13. The communication method as claimed in claim 12, further comprising: using a waiting queue to record contents of a communication transaction that failed to transmit from a source module and are temporarily stored and dynamically managed in a tracker of the queue of the destination module; managing the waiting queue; and when the queue of the destination module releases the tracker, filling the released tracker with the contents of the communication transaction obtained from the waiting queue.
14. The communication method as claimed in claim 13, wherein: the source module is requested to retransmit the communication transaction with the identification number recorded in the retransmission list to the destination module when the queue of the destination module releases the tracker and the released tracker is filled with the contents of the communication transaction obtained from the waiting queue.
15. The communication method as claimed in claim 14, further comprising: temporarily storing contents of the retransmitted communication transaction in the waiting queue.
16. The communication method as claimed in claim 15, further comprising: when the retransmission list is not full but already has an identification number of a communication transaction recorded thereon, adding an identification number of a new communication transaction to the retransmission list; and when the retransmission list is not full and the waiting queue is full, adding an identification number of a new communication transaction to the retransmission list.
17. The communication method as claimed in claim 16, further comprising: when the waiting queue is not full but already has contents of a communication transaction loaded thereon, adding contents of a new communication transaction to the waiting queue; and when the waiting queue is not full and the queue is full, adding contents of a new communication transaction to the waiting queue.
18. The communication method as claimed in claim 15, wherein: in comparison with the waiting queue, the retransmission list is smaller in size and lower in power consumption; and compared to the queue, the waiting queue is smaller in size and lower in power consumption.
19. The communication method as claimed in claim 12, further comprising: temporarily storing contents of the retransmitted communication transaction in the queue for dynamic management.
20. The communication method as claimed in claim 19, further comprising: when the retransmission list is not full but already has an identification number of a communication transaction recorded thereon, an identification number of a new communication transaction is added to the retransmission list; and when the retransmission list is not full and the queue is full, an identification number of a new communication transaction is added to the retransmission list.
21. The communication method as claimed in claim 20, wherein: compared to the queue, the retransmission list is smaller in size and lower in power consumption.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0011] The present invention can be more fully understood by reading the subsequent detailed description and examples with references made to the accompanying drawings, wherein:
[0012]
[0013]
[0014]
[0015]
[0016]
[0017]
[0018]
[0019]
[0020]
[0021]
[0022]
[0023]
[0024]
DETAILED DESCRIPTION OF THE INVENTION
[0025] The following description shows exemplary embodiments of carrying out the invention. This description is made for the purpose of illustrating the general principles of the invention and should not be taken in a limiting sense. The scope of the invention is best determined by reference to the appended claims.
[0026] The communication technology described in this disclosure may be applied to various architectures of electronic systems. In the following, an on-chip interconnection network in SoC (System on a Chip) is discussed as an example, but it is not intended to be limited thereto.
[0027]
[0028]
[0029] The functional blocks in the SoC 100 sometimes act as a source of communication data, sometimes as a destination for communication data. For example, a central processing unit may be a source module that provides data to be transmitted to the cache L2/LLC controller via the on-chip interconnection network 102. The central processing unit may also be a destination module that receives the data that the memory controller read from a memory. Communication optimization may be applied to modify a source module or a destination module. The functional blocks that switch between the two roles (sometimes being a source module and sometimes being a destination module) may combine the two types of communication optimization solutions.
[0030] First, the modifications made to the source module for communication optimization are discussed.
[0031]
[0032] The transaction capability table Tab.sub.0 is discussed in this paragraph as an example. In the transaction capability table Tab.sub.0, several factors are recorded for each of the destination modules T.sub.0 . . . T.sub.(n-1). The factors include values representing intrinsic transaction capability k, borrowed transaction capability Cb#, a loan Cl# of transaction capability, and practical transaction capability TC#. The practical transaction capability TC# is estimated from the intrinsic transaction capability k, the borrowed transaction capability Cb#, the loan Cl# of transaction capability and transaction capability consumption C#. Based on the practical transaction capability TC#, it is determined whether the corresponding source module could transmit a communication transaction to the corresponding destination module without affecting the communication network. The non-zero value of the practical transaction capability TC# represents that the corresponding source module is allowed to issue a communication transaction to the corresponding destination module. When the practical transaction capability TC# is zero, the source module is not allowed to request a communication transaction to the destination module to avoid blocking the communication network.
[0033] In this paragraph, the contents recorded in the transaction capability table Tab.sub.0 for the destination modules T.sub.0 is discussed in detail. The intrinsic transaction capability k may be r/m. The number of trackers Tracker_0, Tracker_1 . . . Tracker_(r1) contained in the queue Q.sub.0 is r, which is expected to be evenly shared by the m source modules S.sub.0 . . . S.sub.(m-1). The borrowed transaction capability Cb# shows how much transaction capacity the source module S.sub.0 has borrowed from other source modules S.sub.1 . . . S.sub.(m-1) to transmit communication transactions to the destination module T.sub.0. In an exemplary embodiment, borrowing information Sb.sub.info is recorded to show which source modules the borrowed transaction capability Cb# comes from. The loan Cl# of transaction capability shows how much transaction capacity the source module S.sub.0 lends other source modules S.sub.1 . . . S.sub.(m-1) to transmit communication transactions with the destination module T.sub.0. In an exemplary embodiment, loan information Sl.sub.info is recorded which lists the source modules that get the loan Cl# of transaction capability. The transaction capability consumption C# reflects the number of communication transactions that have been transmitted from the source module S.sub.0 to the destination module T.sub.0 and is being processed in the destination module T.sub.0. When one communication transaction requested by the source module S.sub.0 is stored to the queue Q.sub.0 of the destination module T.sub.0, the value representing the transaction capability consumption C# is increased by one. After a communication transaction is finished and removed from the queue Q.sub.0, the value representing the transaction capability consumption C# is decreased by 1. An estimate of the practical transaction capability TC# of the source module S.sub.0 to request communication transaction to the destination module T.sub.0 can be calculated using the following formula:
TC#=k+Cb#Cl#C#
By sharing the transaction capability regarding a particular destination module between the different source modules, the practical transaction capability TC# can be kept above zero. As a result, the source module S.sub.0 is no longer limited to the intrinsic transaction capability k if it has a strong communication transaction demand to the destination module T.sub.0. On the contrary, if the source module S.sub.0 does not have a demand for communication transactions to the destination module T.sub.0, its intrinsic transaction capability k can be lent to the other source modules S.sub.1 . . . S.sub.(m-1). In one exemplary embodiment, the loan Cl# of transaction capacity cannot exceed the intrinsic transaction capability k. Only the intrinsic transaction capability k can be loaned.
[0034]
[0035] Referring to
[0036] In step S404, it detects whether a request for communication transaction occurs and the source module S.sub.x and the destination module T.sub.y regarding the communication transaction are recorded. With regard to this communication transaction, step S406 determines whether the practical transaction capability TC# of the source module S.sub.x to the destination module T.sub.y is greater than zero. If it is greater than 0, the flow proceeds to step S408, and the source module S.sub.x transmits the communication transaction detected in step S404 to the queue Q.sub.y of the destination module T.sub.y to be temporarily stored and dynamically managed in one of the trackers. In step S408, a value representing the transaction capability consumption C# of the source module S.sub.x to the destination module T.sub.y is increased by one.
[0037] When it is determined in step S406 that the source module S.sub.x has no transaction capability to the destination module T.sub.y (the practical transaction capability TC# is 0), the flow proceeds to step S412 of
[0038] When it is determined in step S412 that the source module S.sub.x has no transaction capability lent to other source modules to transact with the destination module T.sub.y (the loan Cl# of transaction capability is 0), the flow proceeds through the node B to step S422 of
[0039] When it is determined in step S426 that none of the other source modules are idle, step S432 is performed. In step S432, transaction capability tables are checked. Regarding the destination module T.sub.y, the loans Cl# of transaction capability are checked. The source module S.sub.z having the loan Cl# not exceeding the value k or not exceeding a threshold value l_th (that is smaller than the value k) is selected in step S428 to lend the source module S.sub.x the transaction capability. In an exemplary embodiment, the selection further depends on the transmission distance. The source module S.sub.x may select the nearest source module to borrow the transaction capability. In an exemplary embodiment, the selection further depends on whether the owned transaction capability is plenty. The source module S.sub.x may select to borrow transaction capability from a source module that has plenty of transaction capability to lend other source modules, i.e. having the highest number of (kCl#). Then, step S430 is performed for the corresponding modifications to the transaction capability tables Tab.sub.x and Tab.sub.z. Then, step S408 is performed. The source module S.sub.x sends the planned communication transaction to the destination module Ty, and the value representing the transaction capability consumption C# of the source module S.sub.x to the destination module T.sub.y is increased by one.
[0040] When it is determined in step S432 that no source module is qualified for sharing out the transaction capability because the checked loans Cl# of transaction capability are too high, step S434 is performed to wait for the completion of a communication transaction that have been transmitted from the source module S.sub.x to the destination module T.sub.y and processed in the destination module T.sub.y (for example, waiting for the value representing the transaction capacity consumption C# to be decreased by 1). Then, step S408 is performed. The source module S.sub.x sends the planned communication transaction to the destination module T.sub.y, and the value representing the transaction capability consumption C# of the source module S.sub.x to the destination module T.sub.y is increased by one.
[0041] According to the above, the use of the all trackers of the destination module is optimized.
[0042] The number of trackers in the different queues Q0 . . . Q(n1) (provided by the different destination modules T0 . . . T(n1)) may be not unified as r, and may be different from each other.
[0043] In the following paragraphs, the optimized communication technology implemented on the side of destination modules is discussed.
[0044]
[0045]
[0046] In step S602, it is monitored whether there is a plan for a communication transaction, and the source module S.sub.x and the destination module T.sub.y regarding the planned communication transaction are recorded. For the planned communication transaction, step S604 is performed to check whether the retransmission list ReT.sub.y records any retransmission needs. If yes, step S606 is performed to list the identification number ID# of the communication transaction planed in step S602 in the retransmission list ReT.sub.y. Then, step S602 is performed to continue monitoring whether there are other plans for communication transactions.
[0047] When the retransmission list ReT.sub.y checked in step S604 shows no communication transaction waiting to be retransmitted, step S608 is performed to check whether the queue Q.sub.y is full. When the queue Q.sub.y is full, step S606 is performed and the identification number ID# of the communication transaction planed in step S602 is listed in the retransmission list ReT.sub.y. When the queue Q.sub.y has any empty tracker, the flow proceeds to step S610. The source module S.sub.x transmits the planned communication transaction to the queue Q.sub.y of the destination module T.sub.y to be temporarily stored and dynamically managed in one of the trackers. Then, step S602 is performed to continue monitoring whether there are other plans of communication transactions.
[0048]
[0049] In step S702, it is monitored whether any tracker is released and the queue Q.sub.h providing the released tracker is recorded. For the released tracker, step S704 is performed to check whether the retransmission list ReT.sub.h records a retransmission demand for a communication transaction. If yes, step S706 is performed. According to the oldest identification number ID# recorded in the retransmission list ReT.sub.h, the corresponding source module S.sub.z is obtained. A retransmission request is issued and the source module S.sub.z retransmits the communication transaction (with the identification number ID#) to the destination module T.sub.h to be temporarily stored and dynamically managed by the tracker released from the queue Q.sub.h. In the retransmission list ReT.sub.h, the identification number ID# of the retransmitted communication transaction is deleted. Then, step S702 is performed to continue monitoring whether any tracker of the queues Q.sub.0 . . . Q.sub.(n-1) is released. When it is determined in step S704 that the retransmission list ReT.sub.h does not record any retransmission demand for any communication transaction, the flow may also go back to step S702 to monitor whether any tracker is released.
[0050]
[0051] Each of the queues Q.sub.0 . . . Q.sub.(n-1) has r trackers Tracker_0 to Tracker_(r1) for temporarily storage and dynamic management of communication transactions transmitted from the source modules S.sub.0 . . . S.sub.(m-1) through the on-chip interconnection network 102. One tracker is provided to correspond to one communication transaction. Each tracker has a state machine that dynamically manages the communication transaction temporarily stored therein. Each of the waiting queues WQ.sub.0 . . . WQ.sub.(n-1) has P entries Entry_0 to Entry_(P1). When all trackers of one queue are occupied, the corresponding waiting queue uses one column to record the currently-received communication transaction. When one tracker is released, a communication transaction temporarily stored in the corresponding waiting queue is moved to the released tracker. The waiting queues WQ.sub.0 . . . WQ.sub.(n1) generally do not include any state machine and are not responsible for the management of the temporarily stored communication transactions. Therefore, the size and power consumption of the queues WQ.sub.0 to WQ.sub.(n-1) are much smaller than the queues Q.sub.0 to Q.sub.(n-1). Each of the retransmission lists ReT.sub.0 . . . ReT.sub.(n-1) has T entries Entry_0, Entry_1 . . . Entry_(T1). When all entries of one waiting queue are occupied, the corresponding retransmission list records the identification number ID# of the planed communication transaction. When an entry of the waiting queue is released later, a retransmitting request is sent according to the recorded identification number ID# and thereby the corresponding source module retransmits the communication transaction that was not successfully transmitted before. The retransmitted communication transaction is stored in the waiting queue waiting to be moved to a released tracker of the corresponding queue. According to the design of
[0052]
[0053]
[0054] In step S1002, it is monitored whether there is a plane for communication transaction, and it is recorded that the communication transaction is issued by the source module S.sub.x to the destination module T.sub.y. For the planed communication transaction, step S1004 is performed to check whether the retransmission list ReT.sub.y records an identification number ID# of another communication transaction to be retransmitted. If yes, step S1006 lists the identification number ID# of the planed communication transaction (detected in step S1002) in the retransmission list ReT.sub.y. Then, the flow may return to step S1002 to continue monitoring whether there are other plans of for communication transactions.
[0055] If it is determined in step S1004 that the retransmission list ReT.sub.y does not mention any communication transaction to be retransmitted, step S1008 is performed to check whether the waiting queue WQ.sub.y stores any communication transaction waiting to be moved to the queue Q.sub.y. If so, step S1010 is performed to check if the waiting queue WQ.sub.y is full. If it is full, the flow proceeds to step S1006, and the identification number ID# of the planned communication transaction (detected in step S1002) is added to the retransmission list ReT.sub.y. If there is an empty entry in the waiting queue WQ.sub.y, the flow proceeds to step S1012, and the source module S.sub.x transmits the planned communication transaction to the waiting queue WQ.sub.y of the destination module T.sub.y for temporary storage. Then, the flow may return to step S1002 to continue monitoring whether there are other plans for communication transactions.
[0056] When it is determined in step S1008 that the waiting queue WQ.sub.y does not contain any communication transaction waiting to be moved to the queue Q.sub.y, step S1014 checks if the queue Q.sub.y is full. If the queue Q.sub.y is full, the flow proceeds to step S1012, and the source module S.sub.x transmits the planned communication transaction to the waiting queue WQ.sub.y of the destination module T.sub.y for temporary storage. If the queue Q.sub.y has an empty tracker for the planned communication transaction, the flow proceeds to step S1016. The source module S.sub.x transmits the planned communication transaction to queue Q.sub.y of destination module T.sub.y to be stored in one tracker for temporary storage and dynamic management. Then, the flow may return to step S1002 to continue monitoring whether there are other plans for communication transactions.
[0057]
[0058] Step S1102 monitors whether a tracker is released and the queue Q.sub.h releasing the tracker is recorded. For the released tracker of the queue Q.sub.h, step S1104 is performed to check whether any communication transaction is waiting in the waiting queue WQ.sub.h to be moved to the queue Q.sub.h. If yes, step S1106 moves the oldest communication transaction stored in the waiting queue WQ.sub.h to the tracker released by the queue Q.sub.h for temporary storage and dynamic management in the tracker. Then, the flow may return to step S1102 to continue monitoring whether any tracker in the queues Q.sub.0 . . . Q.sub.(n-1) is released. When it is determined in step S1104 that there is no communication transaction in the waiting queue WQ.sub.h waiting to be moved to the queue Q.sub.h, the flow returns to step S1102 to continue monitoring whether any tracker of the queues Q.sub.0 . . . Q.sub.(n-1) is released.
[0059]
[0060] Step S1112 monitors whether the waiting queues WQ.sub.0 . . . WQ.sub.(n-1) have an entry released (e.g., moving a communication transaction from a waiting queue to a tracker in step S1106 of
[0061] The monitoring step S1102 of
[0062] As the aforementioned discussion, the turbo queues provided in the destination modules T.sub.0 . . . T.sub.(n-1) result in significant improvements. Other variations are possible. The number of trackers in each of the queues Q.sub.0 . . . Q.sub.(n-1) of the different destination modules T.sub.0 . . . T.sub.(n-1) is not limited to r. The different queues Q.sub.0 . . . Q.sub.(n-1) may have different number of trackers. The different retransmission lists ReT.sub.0 . . . ReT.sub.(n-1) of the different destination modules T.sub.0 . . . T.sub.(n-1) may be different in size. The different waiting queues WQ.sub.0 . . . WQ.sub.(n-1) of the different destination modules T.sub.0 . . . T.sub.(n-1) may have different number of entries.
[0063]
[0064] Other techniques that use the above concepts in signal transmitting and receiving are within the scope of the disclosure. Based on the above contents, the present invention further relates to a communication method.
[0065] While the invention has been described by way of example and in terms of the preferred embodiments, it should be understood that the invention is not limited to the disclosed embodiments. On the contrary, it is intended to cover various modifications and similar arrangements (as would be apparent to those skilled in the art). Therefore, the scope of the appended claims should be accorded the broadest interpretation so as to encompass all such modifications and similar arrangements.