A bit operation processor having a first address operation unit for updating the address of data in units of a byte or multiple bytes for performing operation in units of a byte or multiple bytes. A second address operation unit for updating the address of data in units of a bit or multiple bits, an address controller operating on the first address operation unit to advance the address in response to the result of address advancement by the second address operation unit. Fetching byte-wide data for operation as addressed by the first address operation unit, whereby operation between data of any number of bits at any positions in byte blocks is controlled simply and fast.

Patent
   RE34635
Priority
Oct 05 1984
Filed
Dec 09 1992
Issued
Jun 07 1994
Expiry
Dec 09 2012
Assg.orig
Entity
Large
0
22
all paid
1. A bit operation processing method for processing operand data and operating data stored in a memory comprising:
(a) a first step of incrementing in units of an integral number of bytes, addresses of said operand data and said operating data to be processed in units of an integral number of bytes independent from each other;
(b) a second step of incrementing addresses of data of said operand data and said operating data in units of an integral number of bits independent from each other;
(c) a third step of causing said first step to increment addresses on the basis of the result of address incrementing in said second step; and
(d) a fourth step of retrieving stored operand data and operating data in units of a byte at locations in memory designated by addresses produced in said first step, and for performing arithmetic or logic operations using the retrieved stored operand data and operating data.
25. A bit operation processing method for processing operand data and operating data stored in a memory, comprising:
a first step for producing memory addresses of data to be subjected to operation processing in units of an integral number of bytes, including a first sub-step of incrementing an address of said operand data and said operating data in units of an integral number of bytes independent from each other, and a second sub-step of incrementing an address of the operand data and the operating data independent from each other;
a second step of starting the address incrementing in said first sub-step on the basis of a result of the address incrementing in said second sub-step; and
a third step of accessing operand data and operating data in said memory at the address produced in said first sub-step, in units of an integral number of bytes, and for performing arithmetic or logic operations using the operand data and said operating data.
4. A bit operation processing method for processing operand data and operating data stored in a memory comprising:
(a) a first step of incrementing in units of an integral number of bytes, addresses of said operand data and said operating data to be processed in units of an integral number of bytes independent from the other;
(b) a second step of incrementing addresses of data of said operand data and said operating data in units of an integral number of bits;
(c) a third step of causing said first step to increment addresses on the basis of the result of address incrementing in said second step; and
(d) a fourth step of retrieving stored operand data and operating data in units of a byte at locations in memory designated by addresses produced in said first step, and for performing arithmetic or logic operations using the retrieved stored operand data and operating data;
wherein memory address control is implemented in said first step and internal data address control is implemented in said second step.
3. A bit operation processing method for processing operand data and operating data stored in a memory comprising:
(a) a first step of incrementing in units of an integral number of bytes, addresses of said operand data and said operating data to be processed in units of an integral number of bytes independent from the other;
(b) a second step of incrementing addresses of data of said operand data and said operating data in units of an integral number of bits;
(c) a third step of causing said first step to increment addresses on the basis of the result of addresses incrementing in said second step; and
(d) a fourth step of retrieving stored operand data and operating data in units of a byte at locations in memory designated by addresses produced in said first step, and for performing arithmetic or logic operations using the retrieved stored operand data and operating data;
wherein said third step includes controlling the address incrementing in said first step in response to carry information created in said second step.
28. A bit operation processing apparatus, having a memory, for processing operand data and operating data stored in said memory, comprising:
means for producing memory addresses of said operand data and said operating data to be subjected to processing in units of an integral number of bytes independent from each other, including first means for producing addresses by incrementing an address in units of an integral number of bytes, and second means for producing addresses by incrementing an address of said operand data and said operating data in units of an integral number of bits independent from each other;
third means for controlling the starting of address incrementing in said first means on the basis of a result of address incrementing in said second means; and
fourth means for accessing operand data and operating data in said memory, said operand data and operating data corresponding to the address produced by said first means and for performing arithmetic or logic operations using the accessed operand data and operating data.
11. A bit operation processing apparatus having a memory for processing operand data and operating data stored in said memory comprising:
(a) first means for producing addresses for addressing stored operand data and operating data in a of an integral number of bytes, said operand data and said operating data being subjected to operation in said units of an integral number of bytes independent from each other;
(b) second means for producing addresses for addressing data of said operand data and said operating data to be processed or in units of an integral number of bits independent from each other;
(c) third means for controlling said second means to increment addresses and for controlling said first means to increment addresses based on the result of address incrementing by said second means; and
(d) fourth means for fetching operand data and operating data in units of a byte from said memory at locations of addresses produced by said first means, and for performing arithmetic or logic operations using said fetched operand data and operating data.
5. A bit operation processing method for processing operant data and operating data stored in a memory comprising:
(a) a first step of incrementing in units of an integral of bytes, addresses of said operand data and said operating data to be processed in units of an integral number of bytes independent from each other;
(b) a second step of incrementing addresses of data of said operand data and said operating data in units of an integral number of bits;
(c) a third step of causing said first step to increment addresses on the basis of the result of address incrementing in said second step; and
(d) a fourth step of retrieving stored operand data and operating data i units of a byte at locations in memory designed by addresses produced in said first step, and for performing arithmetic or logic operations using the retrieved stored operand data and operating data;
wherein said fourth step implements control for the starting bit position of said operating data and control for the starting bit position of said operand data independently from each other.
2. A bit operation processing method for processing operand data and operating data stored in a memory comprising:
(a) a first step of incrementing in units of an integral number of bytes, addresses of said operand data and said operating data to be processed in units of an integral number of bytes independent from each other;
(b) a second step of incrementing addresses of data of said operand data and said operating data in units of an integral number of bits;
(c) a third step of causing said first step to increment addresses on the basis of the result of address incrementing in said second step; and
(d) a fourth step of retrieving stored operand data and operating data i units of a byte at locations in memory designated by addresses produced in said first step, and for performing arithmetic or logic operations using the retrieved stored operand data and operating data;
wherein said third step includes generating a starting bit position for a subsequent operation based on the result of addition of a current starting bit position to a number of operation bits of data defined within said unit of data implemented by said second step.
13. A bit operation processing apparatus having a memory for processing operand data and operating data stored in said memory comprising:
(a) first means for producing addresses for addressing stored operand data and operating data in units of an integral number of bytes, said operand data and said operating data being subjected to operation in said units of an integral number of bytes independent from each other;
(b) second means for producing addresses for addressing data of said operand data and said operating data in units of an integral number of bits;
(c) third means for controlling said second means to increment addresses and for controlling said first means to increment addresses based on the result of address incrementing by said second means; and
(d) fourth means for fetching operand data and operating data in units of a byte from said memory at locations of addresses produced by said first means, and for performing arithmetic or logic operations using said fetched operand data and operating data;
wherein said first means includes means for effecting address incrementing in response to a carry signal from said second means.
14. A bit operation processing apparatus having a memory for processing operand data and operating data stored in said memory comprising:
(a) first means for producing addresses for addressing stored operand data and operating data in units of an integral number of bytes, said operand data and said operating data being subjected to operation in said units of an integral number of bytes independent from each other;
(b) second means for producing addresses for addressing data of said operand data and said operating data in units of an integral number of bits;
(c) third means for controlling said second means to increment addresses and for controlling said first means to increment addresses based on the result of address incrementing by said second means; and
(d) fourth means for fetching operand data and operating data in units of a byte from said memory at locations of addresses produced by said first means, and for performing arithmetic or logic operations using said fetched operand data and operating data;
wherein said first means performs address control for said memory and said second means performs address control for internal operation data registers.
7. A bit operation processing method for processing operand and operating data stored in a memory comprising:
(a) a first step of incrementing in units of an integral number of bytes, addresses of said operand data and said operating data to be processed in units of an integral number of bytes independent from each other;
(b) a second step of incrementing addresses of data of said operand data and said operating data in units of an integral number of bits;
(c) a third step of causing said first step to increment addresses on the basis of the result of address incrementing in said second step; and
(d) a fourth step of retrieving stored operand data and operating data in units of a byte at locations in memory designated by addresses produced in said first step, and for performing arithmetic or logic operations using the retrieved stored operand data and operating data;
wherein said fourth step comprises
(a) a fifth step of slicing part of the operating data and part of the operand data;
(b) a sixth step of performing an operation between sliced operating data and sliced operand data; and
(c) a seventh step of merging resultant data of said sixth step into said operating data or said operand data, and storing the result in the memory.
26. A bit operation processing method for processing operand and operating data stored in memory, comprising:
a first step for producing memory addresses of data to be subjected to operation processing in units of an integral number of bytes, including a first sub-step of incrementing an address of said operand data and said operating data in units of an integral number of bytes independent from each other, and a second sub-step of incrementing an address of data in units of an integral number of bits;
a second step of starting the address incrementing in said first sub-step on the basis of a result of the address incrementing in said second sub-step; and
a third step of accessing operand data and operating data in said memory at the address produced in said first sub-step, in units of an integral number of bytes, and for performing arithmetic or logic operations using the operand data and operating data;
wherein in said second step the value of an operation bit width defined within a range in boundaries of a length of data operated in units of an integral number of bytes, and the value of an operation starting bit position in a current operation process are added to generate an operation starting bit position in the next operation process.
29. A bit operation processing apparatus, having a memory, for processing operand data and operating data stored in said memory, comprising:
means for producing memory addresses of said operand data and said operating data to be subjected to processing in units of an integral number of bytes independent from each other, including first means for producing addresses by incrementing an address in units of an integral number of bytes, and second means for producing addresses by incrementing an address in units of an integral number of bits;
third means for controlling the starting of address incrementing in said first means on the basis of a result of address incrementing in said second means; and
fourth means for accessing operand data and operating data in said memory, said operand data and operating data corresponding to the address produced by said first means and for performing arithmetic or logic operations using the accessed operand data and operating data;
wherein said third means includes means for adding the value of a width of operation bits defined within a range in boundaries of a length of data operated in units of an integral number of bytes, and the value of an operation starting bit position in a current operation process to generate an operation starting bit position in a subsequent operation process.
12. A bit operation processing apparatus having a memory for processing operand data and operating data stored in said memory comprising:
(a) first means for producing addresses for addressing stored operand data and operating data in units of an integral number of bytes, said operand data and said operating data being subjected to operation in said units of an integral number of bytes independent from each other;
(b) second means for producing addresses for addressing data of said operand data and said operating data in units of an integral number of bits;
(c) third means for controlling said second means to increment addresses and for controlling said first means to increment addresses based on the result of address incrementing by said second means; and
(d) fourth means for fetching operand data and operating data in units of a byte from said memory at locations of addresses produced by said first means, and for performing arithmetic or logic operations using said fetched operand data and operating data;
wherein said third means includes means for controlling said second means to add a number of operation bits within the data length in said units of an integral number of bytes to a value of a current operation starting bit position, thereby generating an operation starting bit position for a subsequent operational process.
15. A bit operation processing apparatus having a memory for processing operand data and operating data stored in said memory comprising:
(a) first means for producing addresses for addressing stored operand data and operating data in units of an integral number of bytes, said operand data and said operating data being subjected to operation in said units of an integral number of bytes independent from each other;
(b) second means for producing addresses for addressing data of said operand data and said operating data in units of an integral number of bits;
(c) third means for controlling said second means to increment addresses and for controlling said first means to increment addresses based on the result of address incrementing by said second means; and
(d) fourth means for fetching operand data and operating data in units of a byte from said memory at locations of addresses produced by said first means, and for performing arithmetic or logic operations using said fetched operand data and operating data;
wherein said fourth means comprises a first register for storing a bit address indicating an operation starting bit position of said operating data and a second register for storing a bit address indicating an operating starting bit position of said operand data, said bit addresses of said operating data and said operand data being controlled separately.
19. A bit operation processing apparatus having a memory for processing operand data and operating data stored in said memory comprising:
(a) first means for producing addresses for addressing stored operand data and operating data in units of an integral number of bytes, said operand data and said operating data being subjected to operation in said units of an integral number of bytes independent from each other;
(b) second means for producing addresses for addressing data of said operand data and said operating data in units of an integral number of bits;
(c) third means for controlling said second means to increment addresses and for controlling said first means to increment addresses based on the result of address incrementing by said second means; and
(d) fourth means for fetching operand data and operating data in units of a byte from said memory at locations of addresses produced by said first means, and for performing arithmetic or logic operations using said fetched operand data and operating data;
wherein said fourth means comprises:
(a) means for slicing part of said operating data and part of said operand data;
(b) means for implementing operation between a sliced operating data and a sliced operand data; and
(c) means for merging a resultant data from said operation means into said sliced operating data or sliced operand data and storing a merged data in said memory.
6. A method according to claim 5, wherein said operation bit width, said starting bit position of operating data and said starting bit position of operand data are identical to those treated in said step 2, and said values are incremented by "1".
8. A method according to claim 7, wherein said sixth step comprises adding at least one "0" bit following the lowest-order bit of operating data and operand data so that both data have the same bit width as that of said operation bit width, in response to a test result that the slicing bit width is smaller than said operation bit width.
9. A method according to claim 7, wherein said sixth step comprises adding at least one "0" bit following the lowest-order bit of one of the operating data and the operand data and adding at least one "1" bit following the lowest-order bit of the other of operating data and operand data so that both data have the same bit width as of said operation bit width, in response to a test result that the slicing bit width is smaller than said operation bit width.
10. A method according to claim 7, wherein said sixth step comprises adding a "0" bit or "1" bit following the lowest-order bit of operand data and operating data depending on the type of operation, in response to a test result that the slicing bit width is smaller than said operation bit width.
16. An apparatus according to claim 15, wherein said second means includes means for storing an advanced bit address in said first register when said second means has calculated said advanced bit address using a content of said first register, or stores an advanced bit address in said second register when said second means has calculated said advanced bit address using a content of said second register.
17. An apparatus according to claim 15, wherein said fourth means fetches data from an external memory at a location of an address produced by said first means when said second means has produced the carry signal in response to a content of said first register, or fetches data from said memory at a location of address produced by said first means when said second means has produced the carry signal in response to a content of said second register, and wherein said fourth means includes means for storing an operation result in said memory at a location of an address prior to incrementing by said first means.
18. An apparatus according to claim 17, wherein said number of operation bits, said operation starting bit position of operating data and said operation starting bit position of operand data are equal to a number of bits which can be treated by said second means, said value of a bit position being always incremented by "1" when said second means is used.
20. An apparatus according to claim 19, wherein said slicing means includes a third register for storing a slicing position of said operating data, a fourth register for storing a slicing position of said operand data and a fifth register for storing a slicing width, and wherein said merging means includes a sixth register for storing a merging bit position and a seventh register for storing a merging width.
21. An apparatus according to claim 20, wherein said operation means appends at least one "0" bit following the lowest order bit position of said sliced operating and operand data so that said data have a same number of bits as a number of operation bits when said slicing width is smaller than the number of operation bits.
22. An apparatus according to claim 20, wherein said operation means appends at least one "0" bit following the lowest bit position of one of said operating data and operand data and appends at least one "1" bit following the lowest bit position of the other so that said data has the same number of bits as the number of operation bits when said slicing width is smaller than the number of operation bits.
23. An apparatus according to claim 20, wherein said operation means appends a "0" bit or "1" bit following the lowest bit position of said operand data and operating data depending on the type of operation when said slicing width is smaller than a number of operation bits.
24. An apparatus according to claim 20, wherein said fifth register and seventh register comprise a common register for implementing slicing and merging of data in a same number of bits.
27. A method according to claim 26, wherein the range of the value of said operation bit width, the value of said starting bit position of operating data and the value of said starting bit position of operand data are identical to the range treated in said second sub-step and "1" is added in generation of the operation starting bit using said addresses.

.Badd.M1 denotes a memory area storing image data in 1-to-1 correspondence to a CRT (Cathode Ray Tube) screen, M2 denotes a memory area storing image data to be added to the image data in M1, XA and XB denote partial areas in M1 and M2, respectively, for which image data processing takes place, WA0, WA1, WA2, WB0 and WB1 denote boundaries of data words having a word length of 16 bits, for example, R0 through Rm represent raster lines for the partial areas XA and XB, na and nb represent displacements of the leading edges of the areas XA and XB from the word boundaries WA0 and W B0, respectively, A0 through An and B0 through Bn represent addresses of word data in the areas XA and XB, and MFY denotes a modification unit for implementing the alignment and processing for the areas XA and XB having different starting bit positions na and nb.

Since the currently available processing unit such as a microprocessor deals with data and makes access to the memory in units of a word or a byte, the memory areas M1 and M2 shown in FIG. 1 have a word or byte structure. However, in image processing, a partial screen area to be processed is specified from the outside of the system without regard to the word boundary as shown by areas XA and XB in FIG. 1. On this account, image processing for combining the partial areas XA and WB needs a modification unit MFY with the following three processing functions.

(1) Rearrangement of word data so that processing can take place on a word-wide bases between data for areas XA and XB with different starting bit positions na and nb.

(2) Separation of data section from word-wide data e.g., na bits, in each of addresses A0, A3, . . . , An-2 so that it is retained unchanged in the processing.

(3) Data processing in any specific number of bits (bit width) so that monochrome display is implemented using one bit per pixel while color display uses a plurality of bits per pixel (generally four bits per pixel).

The operation of the modification unit having these functions will be described in connection with FIG. 2. Throughout the following description, it is assumed that the image data memory is addressed in units of a word.

FIG. 2 shows a 2-word register SRC(A) and SRC(B) for storing data read out of the processing area XB, a 2-word register DST(A) and DST(B) for storing data read out of the processing area XA, and a 2-word register when the image processing of the present invention, as explained with reference to FIG. 1, is implemented address operation register unit BR including an operation bit width register WNR for storing the value of operation bit width WN, a source bit address register SNR for storing the operation starting bit position SN for the processing area XB and a destination bit register DNR for storing the operation starting bit position DN for the processing area XA. Signal line AC is for the carry produced by the bit address operation unit ADB, signal bus MA is for the word address produced by the word address operation unit ADW, and signal bus D is for word data, through which buses image data is transferred with the memory areas M1 and M2. The bit register unit BR and the bit address operation unit ADB in combination constitute a bit address control unit BM. The contents of the bit register unit BR, i.e., WN, SN and DN, are used by the bit operation unit BOU.

The bit operation unit 110 fetches data from separate memory areas M1 and M2 within the image data memory 120 via the memory interface unit MIF. There are two cases of reading the memory areas M1 and M2 depending on the starting bit position na (nb) of a data segment with a bit width WN to be processed currently in a data word with a bit width of L as follows.

(a) New word data is required for the subsequent operation, in case, ##EQU1##

(b) Current word data suffices for the subsequent operation, in case, ##EQU2##

The above conditions are tested on a hardware basis through the provision of an L-bit bit address operation unit ADB for adding values na (nb) and WN, with the decision being made depending on the presence or absence of the carry signal AC from the operation unit ADB. The carry signal AC indicates the need of next word data reading, and it is used to trigger the word address operation unit ADW for addressing the next data word. In this way, the bit operation unit 110 makes access to the memory areas M1 and M2 only when new word data becomes necessary for processing.

In describing operation unit 110, the operation of the bit address control unit BM will first be explained.

The bit address control unit BM operates on the bit address operation unit ADB to add a starting bit address SN (DN) in the register SNR (DNR) to a operation bit width WN in the register WNR to evaluate the starting bit address SN (DN) for the next operation, and stores the result in the register SNR (DNR).

Generally, image processing is conducted between image data in two separate screen areas, and therefore both corresponding memory areas XA and XB under process have distinct starting bit addresses which need to be stored separately, DN in DNR and SN in SNR. The operation bit width WN is constant during the entire process and common to both processing areas XA and XB, and it is stored in the single register WNR.

The bit address operation unit ADB is of four bits as mentioned previously, providing a result in the range of (0)HEX to (F)HEX. Accordingly, the output of the bit address operation unit ADB represents the bit position between contiguous word boundaries. However, the operation bit width WN used by the bit operation unit BOU requires bit range including (10)HEX beyond the word boundary in addition to (1)HEX to (F)HEX. On this account, the bit operation unit BOU is designed to interpret the operation bit width WN as shown by the table of FIG. 8. In this way, the bit address control unit BM calculates the relative bit address within a 16-bit data word.

The word address operation unit ADW operates to increment the word address in response to a signal from the bit address control unit BM. The following describes the interface between the ADW and the bit address operation unit ADB in BM for the word addressing operation. The word address operation unit ADW is notified by the ADB of the overrun of the word boundary by use of the carry signal AC produced by the ADB. However, the value which any of the bit address operation unit ADB and registers WNR, SNR and DNR, which have a capacity of four bits is (0)HEX to (F)HEX, therefore, addition of WN and SN (or DN) does not always produce the carry signal AC to meet the purpose. For example, in case of WN=(F)HEX, SN=(0)HEX for the 16-bit operation (See FIG. 8), the following bit address calculation does not create the carry signal AC despite the case that the bit address will reach beyond the work boundary in the next operation.

WN+SN=(F)HEX +(0)HEX =(F)HEX

On this account, the address increment operation by the bit address operation unit ADB must include addition of one so that the carry signal AC is produced as desired, as follows.

(WN+1)+SN=(F)HEX +(1)HEX -(0)HEX =(10)HEX (4)

As mentioned above, a necessary carry signal AC can be produced by adding "1", and addition of "1" becomes indispensable.

The aforementioned carry signal AC can be used as a decision signal indicating whether or not the bit position will reach beyond the current word boundary in the next operation cycle. Accordingly, the carry signal AC from the bit address operation unit ADB can be used as, (1) an anticipation signal indicating the need of fetching the next word data, and (2) a trigger signal to the word address operation unit ADW for generating the address of word data to be fetched. In other words, the carry signal AC from the bit address operation unit ADB can be used for timing the access operation of the memory interface unit MIF to the processing areas XA and XB, as shown in FIG. 9. Due to separate registers SNR and DNR for storing the starting bit addresses SN and DN, the above-mentioned functions (1) and (2) of the carry signal AC can reflect on the processing areas XA and XB independently.

FIG. 10 shows in flowchart the operation of the foregoing embodiment of this invention applied to the image processing system shown in FIG. 1. In a sequence of operations, a processing step P1 sets the word address B0 and bit address nb (SN=nb) of SNR for the operation starting bit position for the processing area XB, step P2 sets the word address A0 and bit address na (DN=na) of DNR for the operation starting bit position for the processing area XA, step P3 is the function of the bit operation unit BOU, step P4 calculates the next operation starting bit position SN for the processing area XB using the bit address operation unit ADB and word address operation unit ADW, step P5 similarly calculates the next operation starting bit position DN for the processing area XA, step XP1 reads a word data in the processing area XB, step XP2 writes the operation result in the processing area XA, step XP3 reads a word data in the processing area XA, step PB1 tests the completion of process for each of rasters Ro-Rm, and steps XB1 and XB2 test the results of executions in the above steps XP1, XP2 and XP3 in accordance with the presence or absence of the carry signal AC.

The decision steps XB1 and XB2 will be explained in more detail in the following.

(1) It is tested as to whether the data segment to be processed next ranges within the current data word or beyond the word boundary.

(2) At the decision step XB1, if the segment is within the current data word (case 1 in FIG. 9), the step XP1 is skipped, or if the segment reaches beyond the word boundary (case 2 in FIG. 9), the step XP1 is executed to read the next word data from the processing area XB.

(3) At the decision step XB2, if the segment is within the current word (case 3 in FIG. 9), the steps XP2 and XP3 are skipped, or if the segment reaches beyond the word boundary (case 4 in FIG. 9), the step XP3 is executed to read the next word data from the processing area XA.

(4) In case 4, the processing step XP2 for writing the processing area XA is executed by the following reason. The processing area XA is included in the memory area M1 as shown in FIG. 1, and it is also written the result of processing. When the next starting bit position calculated basing on the value of DN reaches beyond the word boundary, it indicates that the operation for one word data has completed.

Namely, the conventional system tests the word boundary condition for fetching the next word data on a software basis, whereas the inventive system employs a bit address operation unit ADB for anticipating the need of memory access, allowing the continuous execution of the internal bit operational process while dealing with external word data.

Decisions made by the steps XB1 and XB2 are based on the carry signal AC produced by the bit address operation unit ADB as described above, and the carry signal AC can readily be distinguished among the four cases shown in FIG. 9 depending on the use of register DNR or SNR. Accordingly, by implementing the decision process for the four cases as shown in FIG. 11 in the memory interface unit MIF, a processing step group X1 including the steps XB1 and XP1, and a processing step group X2 including the steps XB2, XP2 and XP3, shown in FIG. 10, can be eliminated. In FIG. 11, steps P1-P5 and PB1 are identical to those shown in FIG. 10.

The foregoing operations of four cases are shown in FIGS. 12, 13 and 14, in which initial values are set as: the operation starting bit address SN=(5)HEX and word address Bo for the processing area XB ; the operation starting bit address DN - (A)HEX and word address Ao for the processing area XA ; the operation bit width WN=(3)HEX. FIG. 12 is for cases 1 and 3, FIG. 13 is for case 4, and FIG. 14 is for case 2 in FIG. 9.

Next, an embodiment of this invention with the intention of fast data processing between rectangular areas on the bit-map display, i.e., raster operation, will be described in connection with FIGS. 15 through 23.

In FIG. 15 showing in detail the bit operation unit BOU in the bit operation processor of FIG. 7, the arrangement includes an operand data register 1, an operating data register 2, an operand data slicing circuit 3, an operating data slicing circuit 4, a processing unit 5, a data merging circuit 6, an operation result register 7, a source bit address register DNR SNR, a destination bit address register SNR DNR, an operation bit width register WNR, a merging address register 11, an operation control register 12, and an operation command decoder 13. In this specification, term "operating data" is used to mean one member of an arithmetic/logic operation, such as X in Z=X+Y, while term "operand data" to mean another member of the operation, such as Y in Z=X+Y. The block diagram further indicates operand data I1, operating data I2, sliced operand data I3, sliced operating data I4, operand data slicing address IS1, operating data slicing address IS2, slicing bit width W, operation result R1, merging address D, writing mask data M, merged data R2, stored result data R3, operation command code FC, and operation decode data F. Fetching of data from the image data memory 120 to the registers 1 and 2, and storing of data from the register 7 in the memory are conducted by making access to the image data memory 120 through the memory interface unit MIF as shown in FIG. 7.

For the simplicity of the following description on the operation of the above arrangement, the processing unit 5 is assumed to have 4 bits in relation to operand data I1, operating data I2, mask data M and merged data R2 each having 8 bits, twice the operation bit width, sliced operand data I3, sliced operating data I4 and computation result R1 each having 4 bits, identical to the operation bit width, and operand data slicing address IS1, operating data slicing address IS2, slicing bit width W and merging address D each having 2 bits, derived from the 2-bit processing unit 5.

FIG. 16 is the output function table for the operand data slicing circuit 3. In the table, IS10 and IS11 are the high-order bit and low-order bit of the operand data slicing address IS1, W0 and W1 are the high-order bit and low-order bit of the slicing bit width W, I30 -I33 are 4-bit sliced operand data (I30 being highest bit, I33 lowest), I10 -I17 are 8-bit operand data (I10 being highest bit, I17 lowest), and F is the operation decode data. The operand data slicing circuit 3 produces `F` at I31 -I33 when W equals to 0 (W0 =0, W1 =0), produces `F` at I32 and I33 when W equals to 1 (W0 =0, W1 =1), produces `F` at I33 when W equals to 2 (W0 =1, W1 =0), and produces an effective data at I30 -I33 when W equals to 3 (W0 =1, W1 =1).

Namely, the slicing bit width W is actually added by one (W+1), so that the circuit performs slicing of data ranging from 1 bit to 4 bits. The operand slicing address IS1 specifies the highest order bit I10 through W+1th bit of operand data I1 when IS1 equals to 0 (IS10 =0, IS11 =0), specifies the second bit I1 through W+1th bit of operand data I1 when it is equal to 1 (IS10 =0, IS11 =1), specifies the third bit I12 and fourth bit I13 when IS1 equals to 2, and specifies the fourth bit I13 for slicing when IS1 equals to 3.

FIG. 17 is the output function table for the operating data slicing circuit 4, which operates identically to the operand data slicing circuit 3 with its input and output signals IS1, I1 and I3 being replaced with IS2, I2 and I4.

FIG. 18 is a table of operation command codes FC, operation decode data F and types of operations. In the table, symbol A represents an operand data, B represents an operating data, "+" signifies logical sum, "·" signifies logical product, "-" signifies negation, "⊖" signifies exclusive logical sum, "plus" signifies arithmetic addition, "minus" signifies arithmetic subtraction, "carry" represents the value of carry flag, and "borrow" represents the value of borrow flag.

FIGS. 19 and 20 are the output function tables for the merging circuit 6, showing merged data R2 and writing mask data M, respectively. Each signal is suffixed to indicate bit positions in the same way as for the signals in FIGS. 16 and 17. The merged data R2 is not dependent on the slicing bit width W, but is a function of the merging address D and operation result R1. With D being equal to 0, the merged data R2 is given at bit positions R20 -R23 a 4-bit operation result R10 -R13 ; at D=1, R21 -R24 are given the operation result; at D=2, R22 -R25 are given the operation result; and at D=3, R23 -R26 are given the operation result. The remaining bit positions of the merged data R2 are filled with "0".

Writing mask data M is a function of merging address D and slicing bit width W, as shown in the table of FIG. 20. With the slicing bit width W being 0, writing mask data M has "1" at one bit position and "0" at remaining bit positions. With W=1, data M has "1" at two contiguous bit positions and "0" at remaining bit positions. With W=2, data M has "1" at three consecutive bit positions, and with W=3, data M has "1" at four consecutive bit positions and "0" at remaining bit positions. Bit positions of writing mask data having "1" are determined from the merging address D, i.e., with D=0, W+1 bits from M0 becomes "1"; with D=1, W+1 bits from M1 becomes "1"; with D=2, W+ 1 bits from M2 become "1"; and with D=3, W+1 bits from M3 become "1", with remaining bit positions becoming "0".

FIG. 21 shows the output function table for the operation result register 7. The 8-bit register 7 provides outputs as a function of merged data R2 and writing mask data M. With bit i of writing mask data M being "0", i.e., Mi=0, bit i of stored data R3, i.e., R3i, is unchanged, while with Mi being "1", the R3i is overwritten by bit i of merged data R2, i.e., R2i, where i takes an arbitrary value ranging 0 through 7.

FIG. 22 illustrates the execution of raster operation on the bit-map display, in which a pair of image data in rectangular areas SA and SB are processed to obtain the result in a rectangular area DST. The bit-map display has a memory which is arranged in the 8-bit or 16-bit word length for reading and writing as in the usual memory. The rectangular data areas SA, SB and DST correspond to bit blocks of memory regardless of word boundaries. Slicing of a bit block within a word or beyond a word is treated by the bit operation processor which operates as shown in FIG. 23.

In this embodiment of the bit operation processor, the operation will be described with the following assumption of settings. The operand data I1 has a starting bit position of IS1=1, operating data I2 has IS2=3, and operation bit width W is 2 bits. The operand data I1 has value `100` on bits 1-3, and operating data I2 has value `001` on bits 3-5.

The operand data slicing circuit 3 responds to the values IS1=1 and W=2 to slice three bits (`100`) from the operand data I1, and adds "0" following the lowest bit position to form sliced operand data I3. In the same way, the operating data slicing circuit 4 produces sliced operating data I4. The processing unit 5 performs operation between the sliced data I3 and I4, and provides the result R1. In the example of FIG. 23, the processing unit 5 is instructed to execute logical summation for the given data. The merging circuit 6 responds to the values of W and D to merge the high-order 3 bits (`101`) of the operation result R1 into 3 bits of the stored data R3 starting at bit 3. By the above operations, operand data I1 and operating data I2 are sliced and, after operation between the data, the result is merged into the stored data R3.

Although logical summation has been explained in the above embodiment, other logical operations such as negation (NOT) and logical multiplication (AND) can obviously be executed. For arithmetic operations, when the bit width of operating data is smaller than the operation bit width (4 bits) of the processing unit 5 as in the case of FIG. 23, lower bit(s) are filled with "0". Arithmetic operations between zeros results in zero without the occurrence of the carry or borrow and does not affect the operation result of high-order bits, and therefore arithmetic operations with less number of bits can be executed. For addition of carry, the operation decode data F becomes 1, and the occurrence of carry is propagated up to the effective bit position, at which the carry bit is added.

Although in the above embodiment the operation decode data F is used only for the sliced operand data IS3, other operation decode data may be used for the sliced operating data IS4 to carry out the execution identically.

As described above, the present invention is effective in controlling the bit position of data for bit operation, as follows.

(1) By addition of a bit address operation unit ADB to the conventional word address operation unit ADW, control of operation between data with different starting bit positions SN and DN in each word data can be simplified.

(2) By using the carry signal AC of the bit address operation unit ADB for incrementing the word address operation unit ADB and by providing registers SNR and DNR separately, the word data memory areas XA and XB can readily be accessed independently of the internal bit processing.

(3) By implementing bit address and word address control and memory access control on a hardware basis, the process can be simplified down to 1/3 or less in terms of processing steps as compared with the conventional system (see FIGS. 3 and 11), whereby speed-up of process is accomplished.

(4) Since execution of operational processes for any number of bits at any bit position in word data can be made, speed-up of bit operation is accomplished.

Urabe, Kiichiro, Kimura, Koichi, Ogura, Toshihiko, Aotsu, Hiroaki

Patent Priority Assignee Title
Patent Priority Assignee Title
3634882,
4023023, Dec 04 1973 Compagnie Internationale pour l'Informatique Field selection data operating device
4058711, Apr 16 1976 Cincinnati Milacron Inc. Asynchronous dual function multiprocessor machine control
4079451, Apr 07 1976 Honeywell Information Systems Inc. Word, byte and bit indexed addressing in a data processing system
4103329, Dec 28 1976 International Business Machines Corporation Data processing system with improved bit field handling
4109310, Aug 06 1973 Xerox Corporation Variable field length addressing system having data byte interchange
4130868, Apr 12 1977 International Business Machines Corporation Independently controllable multiple address registers for a data processor
4135242, Nov 07 1977 NCR Corporation Method and processor having bit-addressable scratch pad memory
4175284, Jul 22 1969 Texas Instruments Incorporated Multi-mode process control computer with bit processing
4212076, Sep 24 1976 Giddings & Lewis, Inc. Digital computer structure providing arithmetic and boolean logic operations, the latter controlling the former
4251864, Jan 02 1979 Honeywell Information Systems Inc. Apparatus and method in a data processing system for manipulation of signal groups having boundaries not coinciding with boundaries of signal group storage space
4358826, Jun 30 1980 International Business Machines Corporation Apparatus for enabling byte or word addressing of storage organized on a word basis
4454593, May 19 1981 Bell Telephone Laboratories, Incorporated Pictorial information processing technique
4523276, Oct 05 1979 Hitachi, Ltd. Input/output control device with memory device for storing variable-length data and method of controlling thereof
4644503, Dec 30 1983 International Business Machines Corporation Computer memory system with integrated parallel shift circuits
4648046, Oct 24 1984 International Business Machines Corporation; INTERNATIONAL BUSINESS MACHINES CORPORATION A CORP OF NY Editing and reflecting color display attributes of non-active profiles
4648049, May 07 1984 Advanced Micro Devices, Inc.; ADVANCED MICRO DEVICES, INC , A CORP OF DE Rapid graphics bit mapping circuit and method
4654781, Oct 02 1981 Raytheon Company Byte addressable memory for variable length instructions and data
4692859, May 16 1983 HARRIS SEMICONDUCTOR PATENTS, INC , A CORP OF DE Multiple byte serial data transfer protocol
DE1938346,
JP4024644,
JP59136831,
/
Executed onAssignorAssigneeConveyanceFrameReelDoc
Dec 09 1992Hitachi, Ltd.(assignment on the face of the patent)
Date Maintenance Fee Events
Dec 30 1994M183: Payment of Maintenance Fee, 4th Year, Large Entity.
Jan 24 1995ASPN: Payor Number Assigned.
Jan 04 1999M184: Payment of Maintenance Fee, 8th Year, Large Entity.
Dec 30 2002M1553: Payment of Maintenance Fee, 12th Year, Large Entity.


Date Maintenance Schedule
Jun 07 19974 years fee payment window open
Dec 07 19976 months grace period start (w surcharge)
Jun 07 1998patent expiry (for year 4)
Jun 07 20002 years to revive unintentionally abandoned end. (for year 4)
Jun 07 20018 years fee payment window open
Dec 07 20016 months grace period start (w surcharge)
Jun 07 2002patent expiry (for year 8)
Jun 07 20042 years to revive unintentionally abandoned end. (for year 8)
Jun 07 200512 years fee payment window open
Dec 07 20056 months grace period start (w surcharge)
Jun 07 2006patent expiry (for year 12)
Jun 07 20082 years to revive unintentionally abandoned end. (for year 12)