Method, apparatus, device and storage medium for accessing static random access memory

The present disclosure relates to a method, an apparatus, an electronic device and a computer readable storage medium for accessing static random access memories. The method includes: receiving an access request for data associated with the static random access memories; writing a plurality of sections of the data into a plurality of different static random access memories in an interleaved manner in response to the access request being a write request for the data, each of the plurality of sections having its respective predetermined size; and reading the plurality of sections of the data from the plurality of static random access memories in an interleaved manner in response to the access request being a read request for the data, each of the plurality of sections having its respective predetermined size.

CROSS REFERENCE TO RELATED APPLICATION

This application claims priority under 35 U.S.C. § 119(a) on Chinese Patent Application No. 201811393074.0, filed with the State Intellectual Property Office of P. R. China on Nov. 21, 2018, the entire contents of which are incorporated herein by reference.

TECHNICAL FIELD

The present disclosure relates to a field of integrated circuit, and more particularly, to a method, an apparatus, a device and a computer readable storage medium for accessing static random access memories (SRAMs).

BACKGROUND

Integrated circuit devices have been widely used in various aspects of daily work and life. The integrated circuit devices include, for example, a field programmable gate array (FPGA), a system on a chip (SOC), an application specific integrated circuit (ASIC) device, and the like. In designs of the FPGA, SOC, and ASIC circuit chip, SRAMs are widely used to store data required for calculations or to buffer results of the calculations. In general, an SRAM memory space may be accessed by independent access devices, such as computing units. However, the SRAM has only one read/write port. In this case, different access devices may conflict on reading from and writing to the SRAM. Upon arbitration, typically only one access device may access the SRAM, while other computing units must wait.

To solve a defect of read-once-write-once of the SRAM, various solutions have been proposed in the industry. However, those solutions usually require redesign of the SRAM at a circuit level, resulting in an inner structure much more complex than a conventional single-port read-once-write-once SRAM and multiplied logics such as those for address control. In addition, in terms of circuit area, as the number of ports increases, the area is also multiplied. Additionally, due to the complicated inner structure, operating efficiency of the SRAM may be decreased. Therefore, the conventional read-many write-many SRAM is expensive and has low operating efficiency.

SUMMARY

Exemplary embodiments according to the present disclosure provide solutions for accessing the SRAMs.

According to a first aspect of the present disclosure, a method for accessing static random access memories, comprising: receiving an access request for data associated with the static random access memories; writing a plurality of sections of the data into a plurality of different static random access memories in an interleaved manner in response to the access request being a write request for the data, each of the plurality of sections having its respective predetermined size; and reading the plurality of sections of the data from the plurality of static random access memories in an interleaved manner in response to the access request being a read request for the data, each of the plurality of sections having its respective predetermined size.

According to a second aspect of the present disclosure, an apparatus for accessing static random access memories, comprising: a receiving module, configured to receive an access request for data associated with static random access memories; and an access module, configured to: write a plurality of sections of the data into a plurality of different static random access memories in an interleaved manner in response to the access request being a write request for the data, each of the plurality of sections having a predetermined size; and read the plurality of sections of the data from the plurality of static random access memories in an interleaved manner in response to the access request being a read request for the data, each of the plurality of sections having a predetermined size.

According to a third aspect of the present disclosure, an electronic device is provided. The electronic device includes one or more processors; and a storage device, configured to store one or more programs, wherein, when the one or more programs are executed by the one or more processors, the one or more processors are configured to implement a method according to the first aspect of the present disclosure.

According to a fourth aspect of the present disclosure, a computer readable storage medium having a computer program stored thereon, wherein, when a program is executed by a processor, the program implements a method according to the first aspect of the present disclosure.

It should be understood that the summary is not intended to limit key or critical features of the embodiments of the present disclosure, nor is it intended to be used to limit the scope of the present disclosure. Other features of the present disclosure will become apparent from the following description.

DETAILED DESCRIPTION

Embodiments of the present disclosure will be described in more detail below with reference to the accompanying drawings. While some embodiments of the present disclosure have been illustrated in the accompanying drawings, it is to be understood that the present disclosure may be embodied in various forms and should not be construed as limited to the embodiments set forth herein; instead, these embodiments are provided so that the present disclosure will be understood thoroughly and completely. It should be understood that the drawings and embodiments of the present disclosure are for illustrative purposes only and are not intended to limit the scope of the present disclosure.

In the description of the embodiments of the present disclosure, the term “include” and its equivalents should be construed as open-ended inclusions, i.e., “including, but not limited to”. The term “based on” should be understood as “at least partially based on”. The term “one embodiment” or “the embodiment” should be understood as “at least one embodiment”. Terms “first,” “second,” and the like may refer to different or identical objects. Other explicit and implicit definitions may also be included below.

Generally, an electronic device may include SRAM(s) having a certain capacity according to design requirements. For example, the electronic device may include a 256 KB SRAM. In conventional solutions, a single 256 KB SRAM may be used for implementation.

As described above, in conventional solutions, the SRAM is typically a single-port SRAM, which may only implement read-once-write-once operations. Even with a multi-port SRAM, it is necessary to redesign the SPRM at circuit level, which decrease operating efficiency.

According to an embodiment of the present disclosure, there is provided a read-many write-many SRAM solution that may be implemented by using an SRAM group including a plurality of SRAMs without redesigning the SRAM itself at the circuit level. Additionally, the SRAM solution according to the embodiment of the present disclosure may improve the read-write efficiency of the SRAM.

For example, an electronic device requiring a 256 KB SRAM may be implemented with two 128 KB SRAMs, or four 64 KB SRAMs, or one 128 KB SRAM and two 64 KB SRAMs. By using a plurality of SRAMs, the access efficiency of the access device may be improved, which will be described in detail below.

Embodiments of the present disclosure will be described in detail below with reference to the accompanying drawings.FIG. 1is a schematic diagram of an exemplary environment100in which embodiments of the present disclosure may be implemented. As shown, the exemplary environment100includes a plurality of access devices which may access a plurality of SRAMs through an electronic device, such as a multi-channel arbiter, to implement read-many write-many operations on the SRAMs. The access device may be, for example, a central processor, a digital signal processor, or the like. It may be understood that the multi-channel arbiter is merely an example and that other electronics or circuits may be used to implement the electronic device.

At least one of the plurality of access devices102,104, . . . ,106may send a data access request to the multi-channel arbiter112during one access period. Here, access refers to reading or writing. For example, the access device refers to a device capable of writing/reading data to/from the SRAM through the multi-channel arbiter112; the access period refers to a read period or a write period for the SRAM; and the data access request refers to a request for writing/reading data to/from the SRAM.

When there is only one access request during one access period, the multi-channel arbiter112may read/write data from/to a plurality of SRAMs according to the access request. When there are a plurality of access requests during one access period, the multi-channel arbiter112may determine access objects based on the plurality of access requests.

In a case where the access objects do not conflict with each other, the plurality of SRAMs may be accessed in parallel during the access period. For example, when the access device102intends to read from the SRAM122and the access device104intends to write into the SRAM124during one access period, the multi-channel arbiter112may perform a read operation on the SRAM122and a write operation on the SRAM124.

In a case where the access objects conflict with each other, the SRAM may be accessed according to priorities during the access period. For example, when both the access devices102and104require reading from the SRAM122during one access period, the multi-channel arbiter112may perform a read operation on the SRAM122according to a predetermined priorities. For example, when the access device102has a higher priority, the multi-channel arbiter112may read data required by the access device102and postpone reading data required by the access device104. Then, during the next access period, the data required by the access device102is located in the SRAM124. At this point, SRAMs122and124may be read in parallel during this access period.

Hereinafter, further detailed description will be made in combination withFIG. 2.FIG. 2is a schematic block diagram of a dual-read dual-write SRAM device according to an embodiment of the present disclosure. The SRAM device includes a first SRAM122and a second SRAM124. The first SRAM122and the second SRAM124have the same capacity; for example, each having 512 memory cells. The memory cells in the first SRAM122are indicated by even numbers, and the memory cells in the second SRAM124are indicated by odd numbers.

Researches by the inventor show that data is generally stored in an SRAM in a continuous manner. Therefore, it is possible to enable the access devices to access the SRAMs122and124in an interleaved manner by constituting a single SRAM through interleaved two SRAMs122and124, thereby increasing the probability of accessing the SRAMs122and124in parallel in a case of a plurality of access devices and improving the access efficiency.

For example, first data may be sequentially stored in the memory cell0in the first SRAM122, the memory cell1in the second SRAM124, the memory cell2in the first SRAM122, the memory cell3in the second SRAM124, . . . , and the memory cell9in the second SRAM124. Second data may be sequentially stored in a storage unit410in the first SRAM122, the storage unit411in the second SRAM124, the storage unit412in the first SRAM122, the storage unit413in the second SRAM124, . . . , and the storage unit419in the second SRAM124.

For example, in the case where the first access device102needs to write the first data into the memory cells0-9and the second access device102needs to write the second data into the memory cells410-419, during a first access (write) period, a first section of the first data needs to be written into the memory cell0in the first SRAM122and a first section of the second data needs to be written into the memory cell410in the first SRAM122, resulting in an access conflict. This is because the first SRAM122has only one port and could only response to one access request.

In this case, the multi-channel arbiter112may arbitrate according to the priorities. For example, when the first access device102has a higher priority than that of the second access device104, the multi-channel arbiter112may write the first section of the first data into the memory cell0and postpones the writing of the first section of the second data until the next access period.

During the next access period, the multi-channel arbiter112determines that a second section of the first data from the first access device102is to be written into the memory cell1in the second SRAM124and the first section of the second data from the second access device104is to be written into the memory cell410in the first SRAM122. In this case, there is no access conflict. Consequently, the multi-channel arbiter112performs parallel writing for the memory cell410in the first SRAM122and the memory cell1in the second SRAM124.

During the next access period, the multi-channel arbiter112performs the parallel writing for the memory cell411and the memory cell412. And so on, no data conflict would occur until all of the first data and the second data has been written completely.

It can be seen that, except for the first access period in which two access devices conflict with each other, no access conflict occurs in the rest periods. The reading/writing efficiency of the first access device102from/to the SRAM is 100%, while the reading/writing efficiency of the first access device104from/to the SRAM is 10/11=91%. In contrast, when the SRAM device is constructed with a conventional single SRAM, the efficiency of each computing unit is only 50%. In summary, M computing units may access the SRAM simultaneously with less or no mutual interference. There is no limitation on the relationship between M and N. In other words, M may be less than, equal to, or greater than N. Generally, increasing the number of N may reduce the probability of conflicts.

In the above example, the multi-channel arbiter112determines a destination address according to the access request from the access device. Then, the multi-channel arbiter112may determine target addresses corresponding to respective sections of the first data based on the destination addresses and a predetermined address mapping relationship. For example, a storage depth of the SRAM device including the first SRAM122and the second SRAM124is 1024. Accordingly, 10 bits are required for representing the target address. For example, the target address of the memory cell0is 0000000000 and the target address of the memory cell1is 0000000001.

In the above example, the last bit is used to determine the SRAM to be accessed. For example, when the last bit is 0, the first SRAM122is to be accessed. When the last bit is 1, the second SRAM124is to be accessed. In fact, any two bits of the address may be used for arbitration.

For example, in a case where one SRAM device is composed of 4 SRAMs, arbitration may be performed using the 0th bit and the 4th bit of the target address. {address[4], address[0]} represents a 2-bit binary number formed by extracting and combining the 4th bit and the 0th bit of the target address. The arbitration logic of the multi-channel arbiter112may be represented as: accessing the first SRAM if {address [4], address [0]} is equal to a binary number 00; accessing the second SRAM if {address [4], address [0]} is equal to a binary number 01; accessing the third SRAM if {address [4], address [0]} is equal to a binary number 10; and accessing the fourth SRAM if {address [4], address [0]} is equal to a binary number 11. However, the present disclosure is not limited thereto. One or more bits at different bit positions in the address may be selected for arbitration with respect to different applications.

AlthoughFIG. 2illustrates two SRAMs, the present disclosure is not limited thereto. For example, more SRAMs may be used to construct an interleaved storage SRAM device. For example, in a case where three SRAMs are used to construct the interleaved storage SRAM device, the data may be sequentially written into the three SRAMs in an interleaved manner. In some embodiments, the configuration of the SRAM device may be dynamically arranged. For example, in response to a new SRAM being added or an SRAM being removed, the interleaved manner may be adjusted dynamically.

Further, although in the example ofFIG. 2, the capacities of the first SRAM122and the second SRAM124are identical, the capacities of the first SRAM122and the second SRAM124may be different. For example, the first SRAM122may have 512 memory cells, and the second SRAM124may have 1024 memory cells. In this case, the first SRAM122and the second SRAM124may be accessed in an interleaved manner by sequentially accessing one memory cell in the first SRAM122, then accessing two memory cells in the second SRAM124, then accessing one memory cell in the first SRAM122, and then accessing two memory cells in the second SRAM124. In other words, each of the data sections to be written into the plurality of SRAMs may have its respective predetermined size that is determined based on the capacities of the plurality of SRAMs.

Although in the example ofFIG. 2, the first access device102has a higher priority, the present disclosure is not limited thereto. In some other examples, the second access device104may have a fixed higher priority. Alternatively, the priorities of the first access device102and the second access device104may be alternate. For example, when a first conflict occurs, the first access device102may have a higher priority. When a second conflict occurs, the second access device104may have a higher priority, and so on. Further, in some cases, a weighted alternate priority pattern may be provided. For example, the priorities may be presented in an order of the first access device102, the second access device104, the second access device104, the first access device102, the second access device104, the second access device104, and so on.

It is to be understood that although a variety of priority patterns has been described, the present disclosure is not limited thereto. The priority pattern may be adjusted dynamically. For example, the priority pattern may be adjusted from the fixed priority pattern to the alternate priority pattern or to the weighted alternate priority pattern.

Although an SRAM that is read and written through a single port has been described in the example ofFIG. 2, the present disclosure is not limited thereto. For example, the SRAM may be a single-port SRAM, a pseudo-dual-port SRAM, a dual-port SRAM or a multiple-port SRAM, or a combination thereof. Further, although operations for writing data have been described in the example ofFIG. 2, the present disclosure is not limited thereto. In the example ofFIG. 2, the access operation may be operations for reading data. For example, in the example ofFIG. 2, the first access device102and the second access device104may read data from the first SRAM122and the second SRAM124in an interleaved manner. In another example, the first access device102may write data into the first SRAM122and the second SRAM124in an interleaved manner, and the second access device104may read data from the first SRAM122and the second SRAM124in an interleaved manner.

FIG. 3is a flow chart showing a method300for accessing static random access memories (SRAMs) according to an embodiment of the present disclosure. For example, the method300may be performed by the multi-channel arbiter112in the environment as illustrated inFIG. 1. It should be understood that the method300may include additional blocks not shown and/or may omit some illustrated blocks. The present disclosure is not limited thereto.

At block302, an access request for data associated with the static random access memories is received.

For example, the multi-channel arbiter112may receive a first access request from a first access device102. The first access request may be a request for writing the data into the first SRAM122and the second SRAM124in an interleaved manner, or may be a request for reading data from the first SRAM122and the second SRAM124in an interleaved manner. In another example, the multi-channel arbiter112may receive the first access request from the first access device102and a second access request from a second access device104. Similar to the above example, the first access request may be a request for reading data or a request for writing data, and the second access request may also be a request for reading data or a request for writing data.

At block303, it is determined whether the request is a request for writing data or a request for reading data.

At block304, a plurality of sections of the data is written into the plurality of different static random access memories in an interleaved manner in response to the access request being a write request for the data, each of the plurality of sections having its respective predetermined size.

For example, in response to a write request for the data that is sent from the first access device102, the multi-channel arbiter112may write a first section of a first data into the first SRAM122, a second section of the first data into the second SRAM124, a third section of the first data into the first SRAM122, a fourth section of the first data into the second SRAM124, and so on, until all of the first data has been written completely.

At block306, the plurality of sections of the data is read from the plurality of static random access memories in an interleaved manner in response to the access request being a read request for the data, each of the plurality of sections having its respective predetermined size.

For example, in response to a read request for the data that is sent from the first access device102, the multi-channel arbiter112may read the first section of the first data from the first SRAM122, the second section of the first data from the second SRAM124, the third section of the first data from the first SRAM122, the fourth section of the first data from the second SRAM124, and so on, until all of the first data has been read completely.

Each section of the first data may have its respective predetermined size, for example, 1 bit or 2 bits. Each section of the first data may have the same or different predetermined size. For example, the first section may be of 1 bit, the second may be of 2 bits, the third section may be of 1 bit, the fourth section may be of 2 bits, and so on.

FIG. 4is a specific flow chart of a method400for accessing the SRAMs according to an embodiment of the present disclosure. For example, the method400may be performed in the environment as illustrated inFIG. 1. It should be understood that method400may include additional blocks not shown and/or may omit some illustrated blocks. The present disclosure is not limited thereto.

At block402, the multi-channel arbiter112receives a first request for accessing the first SRAM and a second request for accessing the second SRAM. The first request may be, for example, a request from the first access device for reading or writing the first data, and the second request may be a request from the second access device for reading or writing the second data.

At block404, the multi-channel arbiter112determines a destination address of first access data and a destination address of second access data. The destination address may be a logical address of the data, such as a logical address contained in the request.

At block406, the multi-channel arbiter112may determine a target address of a section of the data to be written during an access period based on the destination address and a predetermined address mapping relationship.

For example, the multi-channel arbiter112may determine the target address of the first section of the first data, e.g., “0000000000”, and the target address of the first section of the second data, e.g., “0000100110”, based on the logical addresses of those data and the address mapping relationship.

At block408, the multi-channel arbiter112may determine the SRAM to be accessed during the access period based on the target address.

For example, the multi-channel arbiter112may determine that both the first section and the second section of the first data require access to the first SRAM122based on the last bit in “0000000000” and “0000100110”.

At block410, the multi-channel arbiter112may determine whether the SRAMs to be accessed are identical based on the access object determined at the block408.

At block416, the multi-channel arbiter112may access the first SRAM122and the second SRAM124in parallel when there is no conflict between the objects to be accessed.

For example, during the access period, the first section of the first data is written into the first SRAM122, and the first section of the second data is read from the second SRAM124. In the next access period, the second section of the first data is written into the second SRAM124, the second section of the second data is read from the first SRAM122, and so on, until all of the first data has been written completely and all of the second data has been read completely.

At block412, the multi-channel arbiter112may determine a current priority of each access device when there is a conflict between the objects to be accessed.

For example, the multi-channel arbiter112may determine that the priority of the first access device102is higher in the current access period according to one of a fixed priority strategy, an alternate priority strategy, or a weighted priority strategy.

At block414, the multi-channel arbiter112accesses a corresponding SRAM according to the priority determined at block412.

For example, in this access period, the first section of the first data from the first access device102is written into the first SRAM122, and an operation of reading data from the first SRAM122by the second access device104is postponed to the next access period.

Then, during the next access period, the multi-channel arbiter112repeats the operations at blocks406,408, and410. Here, since it is determined at block210that the SRAMs to be accessed are different, the method400proceeds to block216. The multi-channel arbiter112accesses the first SRAM122and the second SRAM124in parallel. For example, during the access period, the first section of the first data is written into the first SRAM122, and the first section of the second data is read from the second SRAM124. Then, during the next access period, the second section of the first data is written into the second SRAM124, the second section of the second data is read from the first SRAM122, and so on, until all of the first data has been written completely and all of the second data has been read completely.

From the above description, it can be seen that embodiments of the present disclosure construct a single “virtual” SRAM device with the plurality of SRAMs, and access the plurality of SRAMs in an interleaved manner. In this way, the embodiments of the present disclosure may construct an SRAM device having a read-many write-many function at low cost without redesigning the circuits for the SRAM, and may greatly improves access efficiency to the SRAM device in the case of a plurality of access devices.

The embodiments of the present disclosure further provide a corresponding device for implementing the above method or process.FIG. 5is a schematic block diagram showing an apparatus500for accessing the static random access memories according to an embodiment of the present disclosure. The apparatus500may be implemented in the environment as illustrated inFIG. 1. As illustrated inFIG. 5, the apparatus500may include a receiving module502, an access module504, and a determination module506.

In some embodiments, the receiving module502is configured to receive an access request for data associated with static random access memories. The access module504is configured to write a plurality of sections of the data into a plurality of static random access memories in an interleaved manner in response to the access request being the write request for the data, each of the plurality of sections having a predetermined size; and to read the plurality of sections of the data from the plurality of static random access memories in an interleaved manner in response to the access request being the read request for the data.

In some embodiments, the predetermined size of the plurality of sections is determined based on the capacities of the plurality of static random access memories.

In some embodiments, the received access request is a first request from a first access device for writing the data as first data. The receiving module502includes a receiving unit configured to receive the second request from the second access device for writing second data into the plurality of static random access memories. The access module includes a first writing unit configured to write the plurality of sections of the second data into the plurality of static random access memories in an interleaved manner, which is in parallel with writing the plurality of sections of the first data in an interleaved manner.

In some embodiments, the apparatus500further includes the determination module506. The determination module506is configured to determine a first object into which a first section of the plurality of sections of the first data is to be written and a second object into which the second section of the plurality of sections of the second data is to be written during a write period, each of the first object and the second object being one of the plurality of static random access memories.

The access module504includes: a second writing unit. The second writing unit is configured to write the first section into the first object and the second section into the second object in parallel in response to the first object being different from the second object; and to write one of the first section and the second section into the first object in response to the first object being identical to the second object.

In some embodiments, the determination module506includes a priority determination unit. The priority determination unit is configured to determine priorities of the first access device and the second access device. The access module504includes a third writing unit. The third writing unit is configured to, in response to the priority of the second access device being higher than the priority of the first access device, write the second section into the first object, and to postpone writing the first section into the first object until the next write period.

In some embodiments, the received access request is a first request from the first access device for reading the data as first data. The receiving module502includes a receiving unit. The receiving unit is configured to receive a second request from a second access device for reading second data from the plurality of static random access memories. The access module504includes a first reading unit, configured to read the plurality of sections of the second data from the plurality of static random access memories in an interleaved manner, which is in parallel with reading the plurality of sections of the first data in an interleaved manner.

In some embodiments, the apparatus500further includes the determination module506. The determination module506is configured to determine a first object from which a first section of the plurality of sections of the first data is to be read and the second object from which a second section of the plurality of sections of the second data is to be read during a read period, each of the first object and the second object being one of the plurality of static random access memories. The access module504includes a second reading unit. The second reading unit is configured to read the first section from the first object and the second section from the second object in parallel in response to the first object being different from the second object; and to read one of the first section and the second section from the first object in response to the first object being identical to the second object.

In some embodiments, the determination module506further includes a priority determination unit. The priority determination unit is configured to determine priorities of the first access device and the second access device. The access module504includes a third reading unit. The third reading unit is configured to, in response to the priority of the second access device being higher than the priority of the first access device, read the second section from the first object, and postpone reading the first section from the first object until the next read period.

In some embodiments, the determination module506includes a memory determination unit. The memory determination unit is configured to determine a destination address for accessing the first data from the first request; determine a target address corresponding to the first section of the first data based on the destination address and a predetermined address mapping relationship; and determine static random access memories corresponding to the first section based on at least a portion of the target address.

The units illustrated inFIG. 5may be implemented in part or in whole as hardware modules, software modules, firmware modules, or any combination thereof. In particular, in some embodiments, the above-described flows, methods, or processes may be implemented by hardware in a storage system, a host corresponding to the storage system or other computing devices independent of the storage system.

FIG. 6is a schematic block diagram of an example device600for implementing embodiments of the present disclosure. The device600may be configured to implement a training data extension device110and/or a model training device140as described inFIG. 1. As illustrated in the figure, the device600includes a central processing unit (CPU)601, which may perform various suitable actions and processes in accordance with computer program instructions stored in a read only memory (ROM)602or loaded from a storage unit608into a random access memory (RAM)603. In the RAM603, various programs and data necessary for operations of the device600may also be stored. The CPU601, the ROM602, and the RAM603are connected to each other through a bus604. An input/output (I/O) interface605is also connected to the bus604.

A number of components in the device600are connected to the I/O interface605, including: an input unit606such as a keyboard, a mouse, and the like; an output unit607such as various types of displays, speakers, etc.; the storage unit608such as a magnetic disk, an optical disk, or the like; and a communication unit609such as a network card, a modem, a wireless communication transceiver, and so on. The communication unit609allows the device600to exchange information/data with other devices via a computer network such as the Internet and/or various telecommunications networks.

The processing unit601performs the various methods and processes described above, such as the method400. For example, in some embodiments, the method400may be implemented as a computer software program tangibly embodied on a machine-readable medium, such as the storage unit608. In some embodiments, some or all of the computer programs may be loaded and/or installed onto the device600via the ROM602and/or the communication unit609. When a computer program is loaded onto the RAM603and executed by the CPU601, one or more steps in the method400described above may be performed. Alternatively, in other embodiments, the CPU601may be configured to perform the method400in any other suitable manner (e.g., by way of the firmware).

Program codes for performing the method in the present disclosure may be written in any combination of one or more programming languages. These program codes may be provided to a processor or controller in a general purpose computer, a special purpose computer, or other programmable data processing devices, such that the program codes, when executed by the processor or controller, are configured to implement functions/operations specified in the flow chart and/or block diagrams. The program code may be executed entirely on a machine, partly on the machine, as a separate software package, partly on the machine, partly on a remote computer, or entirely on the remote computer or server.

In the context of the present disclosure, the machine-readable medium may be a tangible medium that may contain, or store a program for use by or in combination with an instruction execution system, an apparatus, or a device. The machine-readable medium may be a machine-readable signal medium or a machine-readable storage medium. The machine-readable medium may include, but is not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples of the machine-readable storage medium may include: an electrical connection having one or more wires, a portable computer disk, a hard disk, a random access memory (RAM), a read only memory (ROM), an Erasable Programmable Read Only Memory (EPROM or a flash memory), an optical fiber, a compact disc read-only memory (CD-ROM), an optical memory component, a magnetic memory component, or any suitable combination thereof.

Moreover, while operations are described in a particular order, this should be understood as that the operations are required to be performed in a particular illustrated order or in a sequential order, or that all illustrated operations are required to be performed to achieve desirable results. In certain circumstances, multitasking and parallel processing may be advantageous. Likewise, while several specific implementation details are included in the above discussion, these should not be construed as limiting the scope of the present disclosure. Certain features described in the context of separate embodiments may also be implemented in combination in a single implementation. Conversely, features that are described in the context of the single implementation may also be implemented in a plurality of implementations separately or in any suitable sub-combination.

Although the subject matter has been described in a language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the attached claims is not necessarily limited to the specific features or acts described above. Instead, the specific features and acts described above are merely exemplary forms for implementing the attached claims.