A mask generator circuit includes at least first and second mask generator circuits coupled to receive most significant and least significant sections of the pointer and to generate masks therefrom, and a plurality of circuits each configured to generate a region of the output mask from the mask generator circuit. The mask generated from the most significant bits section of the pointer (the most significant bits (MSB) mask) includes bits corresponding to various regions of the output mask. The plurality of circuits receive the MSB mask and the least significant bits (LSB) mask generated from the least significant bits section of the pointer and generate the output mask therefrom.
|
14. A method for generating an output mask having a transition between a binary one and a binary zero at a location in the output mask identified by a pointer, the method comprising:
generating a first mask responsive to a plurality of most significant bits of the pointer, wherein each bit of the first mask corresponds to a respective region of the output mask and is indicative, in a first state, that the transition either occurs in a less significant region than the respective region or occurs in the respective region, and indicative, in a second state, that the transition occurs in a more significant region of the output mask than the respective region; generating a second mask responsive to a plurality of least significant bits of the pointer; and generating a first region of the output mask responsive to: (i) a first bit of the first mask, the first bit corresponding to the first region of the output mask; (ii) a second bit of the first mask, the second bit corresponding to a neighboring region to the first region, the neighboring region being a less significant region of the output mask; and (iii) bits of the second mask.
1. A mask generator for generating an output mask having a transition between a binary one and a binary zero at a location in the output mask identified by a pointer provided to the mask generator, the mask generator comprising:
a first mask generator coupled to receive a plurality of most significant bits of the pointer and configured to generate a first mask in response thereto, each bit of the first mask corresponding to a respective region of the output mask and indicative, in a first state, that the transition either occurs in a less significant region than the respective region or occurs in the respective region, and indicative, in a second state, that the transition occurs in a more significant region of the output mask than the respective region; a second mask generator coupled to receive a plurality of least significant bits of the pointer and configured to generate a second mask in response thereto; and a plurality of circuits coupled to the first mask generator and the second mask generator, wherein the plurality of circuits are configured to generate the output mask responsive to the first and second masks, and wherein the plurality of circuits includes a first circuit, the first circuit configured to generate a first region of the output mask, and wherein the first circuit is coupled to receive a first bit of the first mask, the first bit corresponding to the first region of the output mask, and wherein the first circuit is coupled to receive a second bit of the first mask, the second bit corresponding to a neighboring region to the first region, the neighboring region being a less significant region of the output mask, and wherein the first circuit is coupled to receive bits of the second mask, and wherein the first circuit is configured to generate the first region of the output mask responsive to the first bit, the second bit, and the bits of the second mask.
2. The mask generator as recited in
3. The mask generator as recited in
4. The mask generator as recited in
5. The mask generator as recited in
6. The mask generator as recited in
7. The mask generator as recited in
8. The mask generator as recited in
9. The mask generator as recited in
10. The mask generator as recited in
11. The mask generator as recited in
12. The mask generator as recited in
13. The mask generator as recited in
a third mask generator coupled to receive a plurality of most significant bits of the plurality of most significant bits of the pointer and configured to generate a third mask in response thereto, each bit of the third mask corresponding to a respective region of the first mask and indicative, in a first state, that the transition either occurs in a less significant region than the respective region or occurs in the respective region, and indicative, in a second state, that the transition occurs in a more significant region of the output mask than the respective region; a fourth mask generator coupled to receive a plurality of least significant bits of the plurality of most significant bits of the pointer and configured to generate a second mask in response thereto; and a second plurality of circuits coupled to the third mask generator and the fourth mask generator, wherein the second plurality of circuits are configured to generate the first mask responsive to the third and fourth masks.
15. The method as recited in
16. The method as recited in
17. The method as recited in
18. The method as recited in
19. The method as recited in
20. The method as recited in
generating a third mask responsive to a plurality of most significant bits of the plurality of most significant bits of the pointer, each bit of the third mask corresponding to a respective region of the first mask and indicative, in a first state, that the transition either occurs in a less significant region than the respective region or occurs in the respective region, and indicative, in a second state, that the transition occurs in a more significant region of the output mask than the respective region; generating a fourth mask responsive to a plurality of least significant bits of the plurality of most significant bits of the pointer; and generating the first mask responsive to the third and fourth masks.
|
1. Field of the Invention
This invention is related to the field of digital devices and, more particularly, to mask generators.
2. Description of the Related Art
Mask generators have a wide variety of uses in digital devices. For example, in processors, mask generators are used to generate masks to identify valid instruction bytes fetched from an instruction cache (e.g. the bytes in the cache line which are subsequent to the fetch address offset with the cache line or prior to a predicted-taken branch within the cache line), to identify cache memory array columns which are selected for use (e.g. programming the redundant columns in the array), etc.
In the past, mask generators which generate masks having a single transition between a binary one and a binary zero (e.g. a set of consecutive binary ones on one side of the transition point and a set of consecutive binary zeros on the other side of the transition point, such as 0011 or 1110 for a four bit mask) have been simple ripple designs. Generally, such a mask generator receives a pointer indicating the location of the transition within the mask. The pointer is decoded to generate a set of output bits corresponding to each mask bit, with the bit corresponding to the location indicated by the pointer being set and the other bits being clear (or vice versa). A particular mask bit is then generated as a logical OR of the decoder bits corresponding to all less significant mask bits than that particular mask bit. While such a circuit may be useful for small masks, generating wider masks in this fashion leads to large and slow circuits for performing the wide OR functions.
Another type of mask generator is described in U.S. Pat. No. 5,935,239, incorporated herein by reference in its entirety. The mask generator in this patent generates a mask from the least significant bits of the pointer and provides the mask to a set of multiplexors which also receive a range of all binary zeros and all binary ones. Each of the multiplexors provides a portion of the output mask. Selection controls for the multiplexors are generated from the most significant bits of the pointer to select the appropriate multiplexor input for each portion of the output mask. Unfortunately, even this solution may be cumbersome and slow, limiting its usefulness as operating frequencies of digital devices increase.
A mask generator circuit includes at least first and second mask generator circuits coupled to receive most significant and least significant sections of the pointer and to generate masks therefrom, and a plurality of circuits each configured to generate a region of the output mask from the mask generator circuit. The mask generated from the most significant bits section of the pointer (the most significant bits (MSB) mask) includes bits corresponding to various regions of the output mask. The plurality of circuits receive the MSB mask and the least significant bits (LSB) mask generated from the least significant bits section of the pointer and generate the output mask therefrom. The number of levels of logic required to generate the mask may be reduced, which may provide for mask generation at higher clock frequencies than previously possible. Furthermore, in certain embodiments, the number of gates used and the fanout on the signals may be limited, which may provide for scalability and low area usage.
Broadly speaking, a mask generator for generating an output mask having a transition between a binary one and a binary zero at a location in the output mask identified by a pointer provided to the mask generator is contemplated. The mask generator includes a first mask generator, a second mask generator, and a plurality of circuits coupled thereto. The first mask generator is coupled to receive a plurality of most significant bits of the pointer and is configured to generate a first mask in response thereto. Each bit of the first mask corresponds to a respective region of the output mask and is indicative, in a first state, that the transition either occurs in a less significant region than the respective region or occurs in the respective region. The bit is further indicative, in a second state, that the transition occurs in a more significant region of the output mask than the respective region. The second mask generator is coupled to receive a plurality of least significant bits of the pointer and is configured to generate a second mask in response thereto. The plurality of circuits are configured to generate the output mask responsive to the first and second masks. The plurality of circuits includes a first circuit configured to generate a first region of the output mask. The first circuit is coupled to receive a first bit of the first mask, the first bit corresponding to the first region of the output mask. The first circuit is further coupled to receive a second bit of the first mask, the second bit corresponding to a neighboring region to the first region, the neighboring region being a less significant region of the output mask. Additionally, the first circuit is coupled to receive bits of the second mask. The first circuit is configured to generate the first region of the output mask responsive to the first bit, the second bit, and the bits of the second mask.
Additionally, a method for generating an output mask having a transition between a binary one and a binary zero at a location in the output mask identified by a pointer is contemplated. A first mask is generated responsive to a plurality of most significant bits of the pointer. Each bit of the first mask corresponds to a respective region of the output mask and is indicative, in a first state, that the transition either occurs in a less significant region than the respective region or occurs in the respective region, and is further indicative, in a second state, that the transition occurs in a more significant region of the output mask than the respective region. A second mask is generated responsive to a plurality of least significant bits of the pointer. A first region of the output mask is generated responsive to: (i) a first bit of the first mask, the first bit corresponding to the first region of the output mask; (ii) a second bit of the first mask, the second bit corresponding to a neighboring region to the first region, the neighboring region being a less significant region of the output mask; and (iii) bits of the second mask.
The following detailed description makes reference to the accompanying drawings, which are now briefly described.
While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that the drawings and detailed description thereto are not intended to limit the invention to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope of the present invention as defined by the appended claims.
Turning now to
Each of the circuits 14, 16A-16B and 18 is coupled to the o0, o1, and o2 mask bits of the mask generator 12B. The circuits 14 and 18 receive the o0, o1, and o2 mask bits on inputs i0, i1, and i2, respectively. The circuits 16A-16B receive the o0, o1, and o2 mask bits on inputs i1, i2, and i3, respectively. Additionally, each of the circuits 14, 16A-16B, and 18 receives at least one mask bit from the mask generator 12A. Particularly, the LSB circuit 14 receives the mask bit o0 (input i3); the intermediate circuit receives the mask bit o0 (input i0) and the mask bit o1 (input i4); the intermediate circuit 16B receives the mask bit o1 (input i0) and the mask bit o2 (input i4); and the MSB circuit receives the mask bit o2 (input i3).
The operation of the mask generator 10 in general may be more easily understood with reference to a truth table 20 shown in FIG. 2. Each input pointer In[3:0] value is shown in the table, along with the corresponding output mask out[15:0]. Thus, in this embodiment, the pointer indicates a transition (when viewed from the least significant bit to the most significant bit) from 0 to 1 at the position in the mask indicated by the pointer. Alternatively, the pointer can indicate a transition from 1 to 0 at the position in the mask indicated by the pointer. The circuits shown in
Also shown in table 20 is the mask outputs from the mask generators 12A (the column labeled Mask[3:0]from In[3:2]) and 12B (the column labeled Mask[3:0] from In[1:0]). The mask from the mask generator 12A will be referred to as the MSB mask below, and the mask from the mask generator 12B will be referred to as the LSB mask. Furthermore, a bit from the MSB mask is referred to as an MSB mask bit, and a bit from the LSB mask is referred to as an LSB mask bit.
Generally speaking, the output mask can be viewed as having regions, each region identified by a different encoding of the most significant bits section of the pointer. In this embodiment, since the most significant bits section is two bits, there are four regions. The number of mask bits included in a region is dependent on the number of bits in the least significant bits section of the pointer (more particularly, 2 raised to the Nth power, where N is the number of bits in the least significant bits section of the pointer). In this embodiment, there are two bits in the least significant bits section and thus four mask bits in each region. A space is included in the Out[15:0] entries of table 20 between the mask bits belonging to each region. Generally, the encoding of the most significant bits section of the pointer identifies which of the regions of the output mask includes the transition for the mask to be generated. Heavy horizontal lines are drawn on table 20 to identify which encodings of the pointer In[3:0] identify which regions of the output mask as including the transition (e.g. encodings 0000 through 0011 identify region 0, the least significant region in the output mask, encodings 0100 through 0111 identify region 1, the second least significant region in the output mask, etc. as shown in FIG. 2).
In a manner similar to identifying more significant and less significant bits, regions in the output mask may be viewed as more significant or less significant. Generally, a first region is "more significant" that a second region if the bits included in the first region are more significant than the bits in the second region. A first region is "less significant" than a second region if the bits included in the first region are less significant than the bits in the second region. In the illustrated embodiment, a bit is more significant than another bit if its bit number is greater than the bit number of the other bit, and is less significant if its bit number is less than the bit number of the other bit. Generally, a bit may be defined to be more significant or less significant in any suitable fashion, e.g. numerically, logically, etc. In the embodiment illustrated in
Another concept which will be useful in describing the operation of the mask generator 10 is neighboring regions. Generally, a first region is a "neighboring region" to a second region if one of the output mask bits included in the first region is adjacent, in the output mask, to one of the output mask bits included in the second region. Thus, regions 2 and 0 are neighboring regions to region 1, in the embodiment of FIG. 2.
The MSB mask may be used to identify which region of the output mask includes the mask's transition between 0 and 1. Generally, each bit of the MSB mask corresponds to a given region. The least significant bit (bit 0) of the MSB mask corresponds to region 0, the next least significant bit (bit 1) corresponds to region 1, etc. The MSB mask bit corresponding to the region indicates, when set, that the transition in the output mask occurs in the corresponding region or in a less significant region. The MSB bit corresponding to the region indicates, when clear, that the transition occurs in a more significant region. To identify, for a given region, whether or not that region is the region in which the transition occurs, the MSB mask bit corresponding to that region and the MSB mask bit corresponding to the neighboring, less significant region to that region may be used. If the MSB mask bit corresponding to the neighboring, less significant region is clear and the MSB mask bit corresponding to the given region is set, the transition occurs in the given region. The sense of the mask bits may also be reversed, in other embodiments (i.e. the meanings of the clear and set mask bits may be reversed from the definition above). Thus, in general, a first state of the MSB mask bit indicates that the transition in the output mask occurs in the corresponding region or in a less significant region and a second state of the MSB mask bit indicates that the transition occurs in a more significant region.
As table 20 illustrates, the LSB mask is equal to the mask bits included in the region of the output mask which includes the mask's transition. Viewed in another way, since the most significant bits of the pointer identify the region in which the transition occurs, the least significant bits of the pointer identify the offset within the identified region at which the transition occurs.
Accordingly, in general, a circuit for generating a particular region of the output mask may receive the MSB mask bit corresponding to that region, the MSB mask bit corresponding to the neighboring, less significant region, and the LSB mask. If the MSB mask bit corresponding to the neighboring, less significant region is set, then the transition occurs in a less significant region to the particular region and thus the particular region is filled with binary ones. If the MSB mask bit corresponding to the neighboring, less significant region is clear and the MSB mask bit corresponding to the particular region is set, then the transition occurs within the particular region and thus the particular region is filled with mask bits corresponding to the LSB mask. If both MSB mask bits are clear (or, alternatively, if the MSB mask bit corresponding to the particular region is clear), then the transition occurs in a more significant region and thus the particular region is filled with binary zeros. Again, as mentioned above, the mask may be defined to transition in either direction, so whether binary zeros or binary ones are used in the above description may change based on the desired output mask.
The above general description is the operation of the intermediate circuits 16A-16B. The LSB and MSB circuits 14 and 18 are similar, but are somewhat simplified. For example, in the case of the LSB circuit 14, there is no neighboring, less significant region and thus no MSB mask bit corresponding to the neighboring, less significant region. Accordingly, the LSB circuit 14 receives the MSB mask bit corresponding to the least significant region and the LSB mask. If the MSB mask bit is set, the transition occurs in the least significant region and thus the least significant region is filled with mask bits corresponding to the LSB mask. If the MSB mask bit is clear, the transition occurs in a more significant region and thus the least significant region is filled with binary zeros. Alternatively, the LSB circuit 14 may be implemented with an intermediate circuit with input i0 tied to binary zero and the inputs i0-i3 of the LSB circuit tied to the inputs i1-i4 of the intermediate circuit, respectively.
The MSB circuit 18 may differ since the MSB mask bit corresponding to the most significant region is always one (the transition always occurs in the most significant region or in a region less significant than the most significant region). Accordingly, the MSB circuit 18 receives the MSB mask bit corresponding to the second most significant region (region 2 in the illustrated embodiment) and the LSB mask. If the MSB mask bit corresponding to region 2 is clear, then the MSB circuit 18 fills the most significant region with mask bits corresponding to the LSB mask. If the MSB mask bit corresponding to region 2 is set, then the MSB circuit 18 fills the most significant region with binary ones. Alternatively, the MSB circuit 18 may be implemented as an intermediate circuit with the i0-i3 inputs connected to the i0-i3 inputs of the intermediate circuit and the i4 input tied to binary 1 (or to the output o3 of the mask generator 12A).
While the embodiment illustrated in
Additionally, even wider mask generators may be realized using mask generators similar to mask generator 10 as the first level (with as many mask generators in parallel as desired to handle the pointer bits) and additional levels of circuitry similar to circuits 14, 16A-16B, and 18. An example is shown and described in more detail below with FIG. 11.
Turning next to
Turing now to
Turning next to
As
An alternative embodiment to
Turning now to
The operation of the LSB circuit 42, intermediate circuits 44A-44N, and MSB circuit 46 may be generally similar to the LSB circuit 14, intermediate circuits 16A-16B, and MSB circuit 18. In this embodiment, each circuit produces a 16 bit region of the output mask, and thus the parallel, independent circuits of
Additional cascading of circuits which receive mask bits generated from least significant and most significant bits of larger pointers maybe used to generate additional mask widths. For example, two parallel instantiations of mask generator 40 may be used with another level of circuits similar to the LSB, MSB, and intermediate circuits described above to form a 16-65,536 mask generator circuit (one of the mask generator 40 instantiations receiving the most significant 8 bits an the other receiving the least significant 8 bits of the input pointer). The additional level of LSB, MSB, and intermediate circuits may each generator a 256 bit region of the 65,536 bit output mask.
Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications.
Patent | Priority | Assignee | Title |
10671606, | Nov 10 2014 | International Business Machines Corporation | Materialized query tables with shared data |
7079542, | Jul 02 2002 | Samsung Electronics Co., Ltd.; Yonsei University | Internet protocol address look-up method |
7567467, | Jun 05 2002 | ATI Technologies ULC | Method and apparatus for data inversion in memory device |
8031538, | Jun 05 2002 | ATI Technologies ULC | Method and apparatus for data inversion in memory device |
8041755, | Jun 08 2007 | Apple Inc | Fast static rotator/shifter with non two's complemented decode and fast mask generation |
8972469, | Jun 30 2011 | Apple Inc.; Apple Inc | Multi-mode combined rotator |
9015216, | Jun 08 2007 | Apple Inc. | Fast static rotator/shifter with non two's complemented decode and fast mask generation |
9643871, | Jun 13 2013 | Corning Incorporated | Submerged combustion melters and burners therefor |
Patent | Priority | Assignee | Title |
4044338, | Feb 10 1975 | Siemens Nixdorf Informationssysteme AG | Associative memory having separately associable zones |
4085447, | Sep 07 1976 | Sperry Rand Corporation | Right justified mask transfer apparatus |
4180861, | Mar 31 1978 | NCR Corporation | Selectively operable mask generator |
4453212, | Jul 13 1981 | SAMSUNG ELECTRONICS CO , LTD | Extended address generating apparatus and method |
4807115, | Oct 07 1983 | Cornell Research Foundation, Inc. | Instruction issuing mechanism for processors with multiple functional units |
4858105, | Mar 26 1986 | Hitachi, Ltd. | Pipelined data processor capable of decoding and executing plural instructions in parallel |
4870563, | Apr 08 1986 | NEC Electronics Corporation | Information processing apparatus having a mask function |
4945509, | Mar 14 1988 | International Business Machines Corporation | Dual look ahead mask generator |
5113515, | Feb 03 1989 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer |
5129066, | Sep 17 1987 | International Business Machines Corporation | Bit mask generator circuit using multiple logic units for generating a bit mask sequence |
5210833, | Nov 08 1985 | NEC Electronics Corporation | System for selectively masking data in a branch address register and replacing the microinstruction address register by the masked data |
5226126, | Feb 24 1989 | NEXGEN, INC | Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags |
5226130, | Feb 26 1990 | NEXGEN, INC | Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency |
5287467, | Apr 18 1991 | International Business Machines Corporation | Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit |
5317701, | Jan 02 1990 | Freescale Semiconductor, Inc | Method for refilling instruction queue by reading predetermined number of instruction words comprising one or more instructions and determining the actual number of instruction words used |
5327543, | Sep 10 1987 | System for selectively masking operand portions for processing thereof | |
5388233, | Apr 30 1993 | Intel Corporation | Method and apparatus for counting instruction types using bit masks and a programmable bit map |
5438668, | Mar 31 1992 | Intellectual Venture Funding LLC | System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer |
5488710, | Feb 08 1991 | Fujitsu Semiconductor Limited | Cache memory and data processor including instruction length decoding circuitry for simultaneously decoding a plurality of variable length instructions |
5513330, | Oct 09 1990 | Advanced Micro Devices, INC | Apparatus for superscalar instruction predecoding using cached instruction lengths |
5586276, | Feb 06 1992 | Intel Corporation | End bit markers for indicating the end of a variable length instruction to facilitate parallel processing of sequential instructions |
5589991, | Nov 19 1993 | PLX Inc. | Optical assembly with folding mirror assembly |
5598546, | Aug 31 1994 | SAMSUNG ELECTRONICS CO , LTD | Dual-architecture super-scalar pipeline |
5608887, | Jan 12 1993 | International Business Machines Corporation | Method of processing data strings |
5680564, | May 26 1995 | National Semiconductor Corporation | Pipelined processor with two tier prefetch buffer structure and method with bypass |
5729725, | Oct 19 1995 | Denso Corporation | Mask data generator and bit field operation circuit |
5748978, | May 17 1996 | GLOBALFOUNDRIES Inc | Byte queue divided into multiple subqueues for optimizing instruction selection logic |
5758114, | Apr 12 1995 | Advanced Micro Devices, Inc. | High speed instruction alignment unit for aligning variable byte-length instructions according to predecode information in a superscalar microprocessor |
5781789, | Aug 31 1995 | GLOBALFOUNDRIES Inc | Superscaler microprocessor employing a parallel mask decoder |
5826071, | Aug 31 1995 | Advanced Micro Devices, Inc. | Parallel mask decoder and method for generating said mask |
5935239, | Aug 31 1995 | Advanced Micro Devices, Inc. | Parallel mask decoder and method for generating said mask |
5995748, | Nov 30 1993 | Texas Instruments Incorporated | Three input arithmetic logic unit with shifter and/or mask generator |
6098087, | Apr 23 1998 | Infineon Technologies AG | Method and apparatus for performing shift operations on packed data |
6098163, | Nov 30 1993 | Texas Instruments Incorporated | Three input arithmetic logic unit with shifter |
EP259095, | |||
EP381471, | |||
EP459232, | |||
EP651320, | |||
EP651323, | |||
GB2263985, | |||
GB2263987, | |||
GB2281422, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Mar 09 2001 | Advanced Micro Devices, Inc. | (assignment on the face of the patent) | / | |||
Mar 09 2001 | MUTHUSAMY, KARTHIKEYAN | Advanced Micro Devices, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 011636 | /0286 |
Date | Maintenance Fee Events |
Sep 14 2007 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Sep 23 2011 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Dec 24 2015 | REM: Maintenance Fee Reminder Mailed. |
May 18 2016 | EXP: Patent Expired for Failure to Pay Maintenance Fees. |
Date | Maintenance Schedule |
May 18 2007 | 4 years fee payment window open |
Nov 18 2007 | 6 months grace period start (w surcharge) |
May 18 2008 | patent expiry (for year 4) |
May 18 2010 | 2 years to revive unintentionally abandoned end. (for year 4) |
May 18 2011 | 8 years fee payment window open |
Nov 18 2011 | 6 months grace period start (w surcharge) |
May 18 2012 | patent expiry (for year 8) |
May 18 2014 | 2 years to revive unintentionally abandoned end. (for year 8) |
May 18 2015 | 12 years fee payment window open |
Nov 18 2015 | 6 months grace period start (w surcharge) |
May 18 2016 | patent expiry (for year 12) |
May 18 2018 | 2 years to revive unintentionally abandoned end. (for year 12) |