Command tag checking in a multi-initiator media controller architecture
First Claim
1. A method of allocating resources of a media controller for a data transfer, the method comprising:
- receiving a data transfer request from at least one host device, wherein the data transfer request includes a host device ID and a data transfer request ID;
generating, by the media controller, a Tag ID of the data transfer request based on the host device ID and the data transfer request ID;
generating, by the media controller, a starting memory address of a tag table based on the Tag ID of the data transfer request;
reading a tag count value from the starting memory address of the tag table;
if the tag count value reaches a threshold;
determining absence of a tag overlap; and
adding the Tag ID of the data transfer request to the tag table at the starting memory address.
4 Assignments
0 Petitions
Accused Products
Abstract
Described embodiments provide a method of allocating resources of a media controller for a data transfer. A data transfer request is received from at least one host device, and includes a host device ID and a data transfer request ID. The media controller generates a Tag ID of the data transfer request based on the host device ID and the data transfer request ID, and generates a starting memory address of a tag table based on the Tag ID of the data transfer request. A tag count value is read from the starting memory address of the tag table. If the tag count value reaches a threshold, an absence of a tag overlap is determined and the Tag ID of the data transfer request is added to the tag table at the starting memory address.
86 Citations
23 Claims
-
1. A method of allocating resources of a media controller for a data transfer, the method comprising:
-
receiving a data transfer request from at least one host device, wherein the data transfer request includes a host device ID and a data transfer request ID; generating, by the media controller, a Tag ID of the data transfer request based on the host device ID and the data transfer request ID; generating, by the media controller, a starting memory address of a tag table based on the Tag ID of the data transfer request; reading a tag count value from the starting memory address of the tag table; if the tag count value reaches a threshold; determining absence of a tag overlap; and adding the Tag ID of the data transfer request to the tag table at the starting memory address. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A method of deallocating resources of a media controller after data transfers are completed by the media controller, the method comprising:
-
providing, to a tag manager of the media controller, a Tag ID corresponding to a complete data transfer; generating, by the tag manager, a starting memory address of a tag table based on the Tag ID of the data transfer; reading a tag count value from the starting memory address of the tag table; if the tag count value has not reached a threshold; reading a Tag ID at the starting memory address; if the read Tag ID and the Tag ID of the completed data transfer are substantially equivalent; setting a status of the starting memory address to invalid; otherwise, if the read Tag ID and the Tag ID of the completed data transfer are not substantially equivalent; hashing the read Tag ID into a hashed read Tag ID; if the hashed read Tag ID is substantially equivalent to the starting search address; decrementing the tag count of the starting search address; incrementing the starting search address to a next address; and reading the tag count value stored at the next address of the tag table; if the hashed read Tag ID is not substantially equivalent to the starting search address; incrementing the starting search address; and reading the tag count value stored at the next address of the tag table. - View Dependent Claims (12, 13, 14, 15, 16)
-
-
17. A media controller for allocating and deallocating resources for a data transfer, the media controller comprising:
for allocating resources for a data transfer; a received data path configured to receive a data transfer request from at least one host device, wherein the data transfer request includes a host device ID and a data transfer request ID; a tag manager configured to i) generate a Tag ID of the data transfer request based on the host device ID and the data transfer request ID, ii) generate a starting memory address of a tag table based on the Tag ID of the data transfer request, and iii) read a tag count value from the starting memory address of the tag table; if the tag count value reaches a threshold; the tag manager is configured to i) determine an absence of a tag overlap, and ii) add the Tag ID of the data transfer request to the tag table at the starting memory address; if the tag count value has not reached the threshold; the tag manager is configured to i) read a previous Tag ID stored at the starting memory address, and ii) if the previous Tag ID and the Tag ID of the data transfer request are substantially equivalent, determine a presence of a tag overlap. - View Dependent Claims (18, 19, 20, 21)
-
22. A non-transitory machine-readable storage medium, having encoded thereon program code, wherein, when the program code is executed by a machine, the machine implements a method of allocating resources of a media controller for a data transfer, the method comprising:
-
receiving a data transfer request from at least one host device, wherein the data transfer request includes a host device ID and a data transfer request ID; generating, by the media controller, a Tag ID of the data transfer request based on the host device ID and the data transfer request ID; generating, by the media controller, a starting memory address of a tag table based on the Tag ID of the data transfer request; reading a tag count value from the starting memory address of the tag table; if the tag count value reaches a threshold; determining absence of a tag overlap; and adding the Tag ID of the data transfer request to the tag table at the starting memory address.
-
-
23. A non-transitory machine-readable storage medium, having encoded thereon program code, wherein, when the program code is executed by a machine, the machine implements a method of deallocating resources of a media controller after data transfers are completed by the media controller, the method comprising:
-
providing, to a tag manager of the media controller, a Tag ID corresponding to a complete data transfer; generating, by the tag manager, a starting memory address of a tag table based on the Tag ID of the data transfer; reading a tag count value from the starting memory address of the tag table; if the tag count value has not reached a threshold; reading a Tag ID at the starting memory address; if the read Tag ID and the Tag ID of the completed data transfer are substantially equivalent; setting a status of the starting memory address to invalid; otherwise, if the read Tag ID and the Tag ID of the completed data transfer are not substantially equivalent; hashing the read Tag ID into a hashed read Tag ID; if the hashed read Tag ID is substantially equivalent to the starting search address; decrementing the tag count of the starting search address; incrementing the starting search address to a next address; and reading the tag count value stored at the next address of the tag table; if the hashed read Tag ID is not substantially equivalent to the starting search address; incrementing the starting search address; and reading the tag count value stored at the next address of the tag table.
-
Specification