Data alignment systems and methods
First Claim
Patent Images
1. A method comprising:
- obtaining data to be written to a memory unit;
determining if the data is aligned, and if the data is aligned, writing a first portion of a first block of the data to a first memory bank of the memory unit, and writing a second portion of the first block of the data to a second memory bank of the memory unit; and
if the data is not aligned, writing the first portion of the first block to the second memory bank and the second portion of the first block to the first memory bank.
1 Assignment
0 Petitions
Accused Products
Abstract
Systems and methods are disclosed for aligning data in memory access and other applications. In one embodiment, a group of data is obtained for storage in a memory unit. The memory unit has two banks. If the data is aligned, a first portion of the data is written to the first memory bank and a second portion is written to the second memory bank. If the data is not aligned, the first portion is written to the second memory bank and the second portion is written to the first memory bank. In one embodiment, the data is written to the first and second memory banks in a substantially simultaneous manner.
-
Citations
27 Claims
-
1. A method comprising:
-
obtaining data to be written to a memory unit;
determining if the data is aligned, and if the data is aligned, writing a first portion of a first block of the data to a first memory bank of the memory unit, and writing a second portion of the first block of the data to a second memory bank of the memory unit; and
if the data is not aligned, writing the first portion of the first block to the second memory bank and the second portion of the first block to the first memory bank. - View Dependent Claims (2, 3, 4)
-
-
5. A system comprising:
-
a data source;
a data target, the data target including;
a memory unit, the memory unit including;
a first memory bank; and
a second memory bank;
logic for selecting data to be written to the first memory bank, the logic being operable to select a first portion of a first block of data if the first block of data is aligned, and to select a second portion of the first block of data if the first block of data is not aligned;
logic for selecting data to be written to the second memory bank, the logic being operable to select the first portion of the first block of data if the first block of data is not aligned, and to select the second portion of the first block of data if the first block of data is aligned; and
a bus communicatively connecting the data source and the data target, the bus being operable to transfer the first block of data from the data source to the data target. - View Dependent Claims (6, 7, 8)
-
-
9. A system comprising:
-
a memory unit, the memory unit comprising;
a first memory bank; and
a second memory bank;
a first multiplexor, an output of the first multiplexor being communicatively connected to the first memory bank, the first multiplexor being operable to select between a first portion of a first data block and a second portion of the first data block, the selection being based on whether the first data block is aligned, and to pass the selected portion to the first memory bank;
a second multiplexor, an output of the second multiplexor being communicatively connected to the second memory bank, the second multiplexor being operable to select between the first portion of the first data block and the second portion of the first data block, the selection being based on whether the first data block is aligned, and to pass the selected portion to the second memory bank;
a third multiplexor, an output of the third multiplexor being communicatively coupled to an address input of the first memory bank, the third multiplexor being operable to select between a first address and a second address, the selection being based on whether the first data block is aligned, and to pass the selected address to the address input of the first memory bank. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16, 17, 18, 19)
-
-
20. A method for writing data to a memory unit, the method comprising:
-
receiving a sequence of data blocks;
obtaining a memory address at which to start writing the data blocks;
determining whether the starting memory address is even or odd;
if the starting memory address is even;
writing a first portion of a first data block in the sequence to a first memory bank at a location identified by a first address;
writing a second portion of the first data block to a second memory bank at a location identified by the first address;
if the starting memory address is odd;
writing the first portion of the first data block to the second memory bank at a location identified by a second address;
writing the second portion of the first data block to the first memory bank at a location identified by a third address. - View Dependent Claims (21, 22, 23, 24)
-
-
25. A system comprising:
a first line card, the first line card comprising;
one or more physical layer devices;
one or more framing devices; and
one or more network processors, at least one network processor comprising;
a microengine;
a memory unit, the memory unit including;
a first memory bank;
a second memory bank; and
logic for selecting data to be written to the first memory bank, the logic being operable to select a first portion of a first block of data if the first block of data is aligned, and to select a second portion of the first block of data if the first block of data is not aligned;
logic for selecting data to be written to the second memory bank, the logic being operable to select the first portion of the first block of data if the first block of data is not aligned, and to select the second portion of the first block of data if the first block of data is aligned; and
a bus connecting the microengine and the memory unit, the bus being operable to transfer the first block of data from the microengine to the memory unit. - View Dependent Claims (26, 27)
Specification