WO2012087548A2 - Vector conflict instructions - Google Patents
Vector conflict instructions Download PDFInfo
- Publication number
- WO2012087548A2 WO2012087548A2 PCT/US2011/063307 US2011063307W WO2012087548A2 WO 2012087548 A2 WO2012087548 A2 WO 2012087548A2 US 2011063307 W US2011063307 W US 2011063307W WO 2012087548 A2 WO2012087548 A2 WO 2012087548A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data structure
- vector
- data
- processing core
- input vector
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Definitions
- the field of invention relates generally to the computing sciences, and, more specifically, to vector conflict instructions.
- scalar Two types of processor architectures are widely recognized in the field of computer science: "scalar” and "vector".
- a scalar processor is designed to execute instructions that perform operations on a single set of data
- a vector processor is designed to execute instructions that perform operations on multiple sets of data.
- Figs. 1A and IB present a comparative example that demonstrates the basic difference between a scalar processor and a vector processor.
- both input operands and output result are stored in dedicated registers. For example, many instructions will have two input operands. Therefore two distinct input registers will be used to temporarily store the respective input operands.
- input registers 101a and 102a of the scalar design of Fig. 1A are observed holding only scalar values (A and B, respectively).
- result register 103a of the scalar design of Fig. 1A is also observed holding only a scalar value (C).
- the input registers 101b and 102b of the vector system of Fig. IB are observed holding vectors (A,D in register 101b and B,E in register 102b).
- the result register 103b of the vector system of Fig. IB is also observed holding a vector value (C,F).
- IB can be globally referred to as a "vector", and, each of the individual scalar values within the vector can be referred to as an "element".
- register 101b is observed to be storing "vector” A, D which is composed of "element” A and "element” D.
- Figs. la,b compare scalar v. vector processing
- Fig. 2 shows a methodology that can be performed with instructions designed to detect vector conflicts
- Fig. 3 shows a pseudo code representation of an embodiment of the methodology of Fig. 2;
- Figs. 4a,b pertain to a first vector conflict instruction
- Figs. 5a,b (prior art) pertain to a vptest instruction
- Figs. 6a,6b pertain to a second vector conflict instruction
- Fig. 7 shows an exemplary processing core
- Fig. 8 shows an exemplary computing system.
- a gather instruction helps construct an input vector for a subsequent vector operation by "gathering" data values specified by the indices of a data array. For example, if a data array "A" has 100 entries, a gather instruction of the form “gather A[15; 34; 66; 78]” will fetch the data values in the 15 th , 34 th , 66 th and 78 th index positions of array A. The fetched data values can then be used to form the data elements of an input vector for the vector operation.
- a "scatter” instruction can be viewed as the reverse of the "gather” instruction.
- a scatter instruction of the form scatter A[15' 34; 66; 78] will store values (e.g., respective elements of an output vector produced by a vector operation) to the 15 th , 34 th , 66 th and 78 th index positions of array A.
- the set of index values that are provided to the gather (and scatter) instructions reflect dependencies within the vector operation.
- Fig. 2 provides a methodology that can be used to successfully account for dependencies when dependencies are identified within an input vector for a vector operation. Specifically, the methodology of Fig. 2 will properly refrain from simultaneously performing the operation on the same operand within the same input vector (e.g., identified by at least two same valued indices). Instead, the operation will be separately performed in a sequence of cycles, where each cycle is executed for each separate instance of the index value that appears multiple times.
- the vector operation will be performed three times.
- the data dependencies are respected because the second operation uses the result of the first operation as an input operand, and, the third operation uses the result of the second operation as an input operand.
- Fig. 3 shows a pseudo code flow of an embodiment of the methodology of Fig. 2.
- Figs. 4a,b through 6a,b show additional details to assist the discussion of the pseudo code flow of Fig. 3.
- indices having a dependency relationship may correspond to, as described above, same indices of an array that define different elements of a same input vector.
- there are three indices having a dependency relationship because the rightmost, middle and leftmost index values each have the same value (7).
- elements _left_mask 330 represents the elements of b that have not yet been used for a gather/vector operation/scatter process sequence.
- elements _left_mask 1 1 1 1 1 which indicates all five elements of b have not yet been processed.
- the pseudo code of Fig. 3 shows that execution of the vconflict(b, b) instruction 300 provides an indices _having_dependency relationship data structure 301.
- Fig. 4a shows a methodology 401 of the vconflict(b, b) instruction
- Fig. 4b shows a hardware logic design that can be designed into a semiconductor chip to perform the vconflict(b, b) instruction.
- the vconflict(b,b) instruction compares each element of an input vector with every element of another input vector and provides the result of each comparison 401.
- the vconflict(b, b) instruction executes with the same vector (b) for both inputs.
- Fig. 4b The hardware design of Fig. 4b may be attempted with a micro-coded and/or state machine approach that dictates operation of controller 410 so that the respective channel selects of multiplexer 411 and de-multiplexer 412 operate in correct unison.
- controller 410 multiplexes a specific one of the index values of the left index register 413 into the comparator stem 414.
- the comparator stem 414 compares the selected index value with every index value in the right index register 415.
- the de-multiplexer 412 directs the output of the comparator stem 414 to the segment of the output register 416 that is aligned with the selected value of the left index register 413.
- the comparator stem may have nxn comparators so that no multiplexer, de-multiplexer or controller are needed (i.e., a separate comparator exists for each bit of the comparison result presented in the output register 416).
- the left most segment 302 of data structure 301 provides the comparison results when the leftmost value of b is individually compared against every value of b. Notably, five results are presented in the segment 302 (one for each value of b), and the results within the segment 302 are respectively aligned with the values of b. As such, the leftmost segment 302 of data structure 301 is "10101" which shows that the leftmost value of b has a dependency relationship with the rightmost value of b, the middle value of b and itself (the leftmost value of b).
- Segment 303 of data structure 301 corresponds to the comparison of the second to leftmost value of b (2) and shows that the value of 2 has no dependency relationships in b other than itself (i.e., segment 302 is 01000).
- Segment 304 having a value of 10101, indicates that the middle value of b (7) has a dependency relationship with itself and the leftmost and rightmost values of b.
- Segment 305 having a value of 00010, indicates that the second rightmost value of b only has a dependency relationship with itself.
- Segment 306 having a value of 10101 indicates that the rightmost value of b (7) has a dependency relationship with the leftmost and middle values of b as well as with itself.
- indices having dependency relationships have been identified (e.g., as represented in the indices_having_dependency_relationship data structure 301 of Fig. 3), a set of non conflicting indices are identified for a subsequent vector operation.
- the set of non conflicting indices is represented in the pseudo code example of Fig. 3, the set of non conflicting indices is represented in the pseudo code example of Fig. 3.
- the indices _permitted_for_exec tion data structure 331 is constructed, at least in part, by performing a logical operation with the indices _having_dependency relationship data structure 300 and an order _of_dependency _mask 309.
- the order _of_dependency_mask 309 articulates the order in which indices having a dependency relationship should be processed.
- dependencies are ordered right to left such that a rightmost index having a dependency relationship is used first for the vector operation, then, the next rightmost index of the dependency relationship is used for a subsequent vector operation cycle, etc. Said another way, the indices having dependency relationships are chosen for each vector operation in order from right to left across b.
- the order _of_dependency mask 309 reflects this order with Is positioned "to the right" of a segment's respective position within the mask 309. That is, segment 310 represents the rightmost value of b. With the ordering rules described above (right value executed before left value in the dependency sequence), the rightmost value will not have any dependencies (even though it is involved in a dependency relationship) that delay its use for vector operation (i.e., it is executed with the first operation cycle). As such, the value of segment 310 is 00000.
- the second segment 311 reflects that, if the second rightmost value of b has a dependency within b, the dependency will be on the rightmost value of b. As such, its value is 00001.
- the third segment 312 reflects that, if the middle value of b has a dependency within b, the dependency will be on the second rightmost and/or rightmost values of b. As such, its value is 00011.
- the fourth segment 313 reflects that, if the second leftmost value of b has a dependency within b, it will be on the middle, second rightmost, and/or rightmost values of b. As such, its value is 00111.
- the fifth segment 314 reflects that, if the leftmost value of b has a dependency within b, it will be on the second leftmost, middle, second rightmost and/or rightmost values of b. As such, its value is 01111.
- indices _permitted_for_execution data structure 331 is constructed in the example of Fig. 3, at least in part, by performing a logical operation with the
- a conflicted_out_indices data structure 308 is constructed by executing a vptest instruction that accepts the indices _having_dependency relationship data structure 301 and the order _of_dependency _mask 309 as inputs.
- FIGs. 5a and 5b An embodiment of the operation of the vptest instruction and an embodiment of a hardware design for the vptest instruction is provided in Figs. 5a and 5b, respectively.
- same positioned bits of same positioned segments of two input vectors are compared 501.
- Segments having at least one set of same positioned bits having a same logic value are identified 502, and, a mask is applied 503.
- a first input vector is placed in register 510 and a second input vector is placed in register 511. Pairs of bits having the same location within their respective segments of the two vectors are ANDed with AND gates 513. If any of the AND gates produce a 1, a 1 is registered in the segment of the output 520 that corresponds to the same positioned segments whose bits were compared.
- controller 514 will cause multiplexers 515, 516 to select the bits of segments 517 and 518.
- each of segments 517 and 518 correspond to the leftmost segments of their respective vectors within registers 510, 511 and therefore are positioned the same within their respective vectors. Same positioned bits of segments 517 and 518 are ANDed by AND gates 513.
- indices _having_dependency relationship data structure 301 is placed in register 510 and the order _of_dependency nask 309 is placed in register 511.
- the operation of the vptest circuit design of Fig. 5b as described above for these input vectors produces the conflicted_out_indices data structure 308 in register 520.
- the conflicted_out_indices data structure 308 identifies which indices are conflicted out of the upcoming vector operation cycle owing to dependencies within b. As observed in Fig.
- the conflicted_out_indices data structure 308 has a value of 10100 which indicates that the middle and leftmost index values of b are not to be executed in the upcoming vector operation because of a dependency (which happens to be the rightmost index value of b).
- the logical inverse of the conflicted_out_indices data structure 314 (
- ⁇ _conflicted_out_indices data structure 307) is then masked against the elements _left_mask 330.
- the elements _left_mask is 1 1 1 1 1.
- the conflicted_out_indices vector in register 520 is presented as the indices _permitted_for_execution vector 331 in output register 523.
- Fig. 3 shows: i) a gather operation that selects the values of A identified by the indices _permitted_for _execution data structure 307; ii) a vector operation being performed on the gathered values of A; and, iii) a scatter operation that stores the results of the vector operation back into the indices identified in data structure 307.
- the vector operation can essentially be any vector operation.
- the process is complete 204, else, the indices having a dependency relationship are re-determined 201.
- the elements _left_mask is updated 332 by redefining it as the elements that were conflicted out of the most recent gather/vector operation/scatter sequence.
- the new elements _left_mask 332 corresponds to a value of 1 0 1 0 0 which indicates that, because the middle and leftmost values of b were not used in the last gather/vector operation/scatter sequence, they still are still "left" for processing. Hence processing is not complete and another iteration needs to be performed.
- the execution of the first of the index values involved in a dependency relationship results in a change in the dependency relationship among the index values of b. Specifically, because the rightmost index value of b has been used for vector operation, vector operation with the middle index value of b no longer needs to be delayed.
- the indices iaving_dependenc ⁇ relationship data structure 301 is therefore updated to reflect this change.
- the indices _having_dependency relationship data structure 301 is updated by executing a vpand instruction that accepts the indices _having_dependency relationship data structure 300 and the conflicted_out_indices data structure 308 as inputs.
- An embodiment of the methodology of the vpand instruction is observed in Fig. 6a.
- the vpand instruction accepts a first block of n bits and a vector having multiple elements each having n bits. A bitwise AND of the first block of n bits against each element in the vector is then performed.
- Fig. 6b presents a possible logic design for the vpand instruction that can be designed into a semiconductor chip.
- the block of n bits for the vpand instruction corresponds to the conflicted_out_indices data structure 308, and, the input vector of the vpand instruction corresponds to the indie es_having_dependency relationship data structure 301.
- the conflicted_out_indices data structure 308 is bitwise ANDed against each of the elements within the indices _having_dependency relationship data structure 301, a new
- indices _having_dependency relationship data structure 316 is produced.
- the bitwise AND with the conflicted_out_indices data structure 308 has the effect of dropping the rightmost index of b from the indices_having_dependency relationship information.
- the rightmost index value of b was permitted to be executed in the first vector operation 315. As such it is no longer part of an existing dependency relationship.
- the logical AND performed by the vpand instruction identifies those indices that had a dependency on the execution of the rightmost index of b - a next one of which is free to be used with the next vector operation.
- elements _left_mask 332 will cause the output of the vptest instruction to be something other than the logical inverse of the conflicted_o t_indices data structure 317.
- the new indices_permitted_for_execution 333 will have a value of 00100 which corresponds to the next conflicted index of b less the indexes of b that have already been executed.
- a next gather, vector operation, scatter instruction sequence is performed 319 with only the middle index of b.
- the indices _having_dependency relationship data structure is updated by executing a vpand(indices_having_dependency relationship; conflicted_out_indices) instruction with the latest indices _having_dependency relationship and conflicted_out_indices data structures 316, 317 being used as inputs.
- the result is another new
- indices Jiaving iependency relationship data structure 320 the logical AND performed by the vpand instruction identifies those indices that had a dependency on the execution of the middle index of b - the next one of which (i.e., the leftmost index of b) is free to be used with the next vector operation.
- elements_left_mask 336 to a value of 00000, no other loops are required and execution is complete.
- Fig. 3 Note that, as represented by the initial vconflict(b,b) instruction 300, this particular example is geared to a situation in which conflicts are detected in a same vector (in this case, vector b). More generally, one or more sets of indices may be used to create the input vector for a vector operation (such as the input vector for a gather/vector op instruction sequence as observed in Fig. 3). Similarly, one or more sets of indices may be used to write the output vector to memory (such as in the scatter in Fig. 3). Conflicts between indices used to construct an input vector and/or to write the output vector to memory can be detected between vectors where the vectors may be the same or different. Again, Fig.
- vconflict(b,c) may be used as the basis for constructing the input vector for the subsequent vector operation
- another vector e.g., c
- the vconflict instruction can be used with same or different input vectors.
- Fig. 7 shows a generic processing core 700 that is believed to describe many different types of processing core architectures such as Complex Instruction Set (CISC), Reduced
- the generic processing core 700 of Figure 7 includes: 1) a fetch unit 703 that fetches instructions (e.g, from cache or memory); 2) a decode unit 704 that decodes instructions; 3) a schedule unit 705 that determines the timing and/or order of instruction issuance to the execution units 706 (notably the scheduler is optional); 4) execution units 706 that execute the instructions; 5) a retirement unit 707 that signifies successful completion of an instruction.
- the processing core may or may not include microcode 708, partially or wholly, to control the micro operations of the execution units 706.
- the execution units are capable of executing vconflict, vptest and vpand instructions.
- the logical circuitry to support these instructions may be dispersed across different execution units, included in a same execution unit, or, at least two of the instructions may be capable of execution from a single execution unit.
- the execution units also support vector instructions.
- the execution units may also be capable of supporting gather and scatter instructions.
- FIG. 8 shows an embodiment of a computing system (e.g., a computer).
- the exemplary computing system of includes: 1) one or more processing cores 801 that may be designed to include two and three register scalar integer and vector instruction execution; 2) a memory control hub (MCH) 802; 3) a system memory 803 (of which different types exist such as DDR RAM, EDO RAM, etc,); 4) a cache 804; 5) an I/O control hub (ICH) 805; 6) a graphics processor 806; 7) a display/screen 807 (of which different types exist such as Cathode Ray Tube (CRT), flat panel, Thin Film Transistor (TFT), Liquid Crystal Display (LCD), DPL, etc.) one or more I/O devices 808.
- CTR Cathode Ray Tube
- TFT Thin Film Transistor
- LCD Liquid Crystal Display
- the one or more processing cores 801 execute instructions in order to perform whatever software routines the computing system implements.
- the instructions frequently involve some sort of operation performed upon data. Both data and instructions are stored in system memory 803 and cache 804.
- Cache 804 is typically designed to have shorter latency times than system memory 803. For example, cache 804 might be integrated onto the same silicon chip(s) as the processor(s) and/or constructed with faster SRAM cells whilst system memory 803 might be constructed with slower DRAM cells. By tending to store more frequently used instructions and data in the cache 804 as opposed to the system memory 803, the overall performance efficiency of the computing system improves.
- System memory 803 is deliberately made available to other components within the computing system.
- the data received from various interfaces to the computing system e.g., keyboard and mouse, printer port, LAN port, modem port, etc.
- an internal storage element of the computing system e.g., hard disk drive
- system memory 803 prior to their being operated upon by the one or more processor(s) 801 in the implementation of a software program.
- data that a software program determines should be sent from the computing system to an outside entity through one of the computing system interfaces, or stored into an internal storage element is often temporarily queued in system memory 803 prior to its being transmitted or stored.
- the ICH 805 is responsible for ensuring that such data is properly passed between the system memory 803 and its appropriate corresponding computing system interface (and internal storage device if the computing system is so designed).
- the MCH 802 is responsible for managing the various contending requests for system memory 803 access amongst the processor(s) 801, interfaces and internal storage elements that may proximately arise in time with respect to one another.
- I/O devices 808 are also implemented in a typical computing system. I/O devices generally are responsible for transferring data to and/or from the computing system (e.g., a networking adapter); or, for large scale non-volatile storage within the computing system (e.g., hard disk drive). ICH 805 has bi-directional point-to-point links between itself and the observed I/O devices 808.
- the computing system e.g., a networking adapter
- ICH 805 has bi-directional point-to-point links between itself and the observed I/O devices 808.
- a "machine” may be a machine that converts intermediate form (or “abstract") instructions into processor specific instructions (e.g., an abstract execution environment such as a "virtual machine” (e.g., a Java Virtual Machine), an interpreter, a
- Common Language Runtime a high-level language virtual machine, etc.
- electronic circuitry disposed on a semiconductor chip e.g., "logic circuitry” implemented with transistors
- logic circuitry implemented with transistors
- Processes taught by the discussion above may also be performed by (in the alternative to a machine or in combination with a machine) electronic circuitry designed to perform the processes (or a portion thereof) without the execution of program code.
- the source level program code may be converted into an intermediate form of program code (such as Java byte code, Microsoft Intermediate Language, etc.) that is understandable to an abstract execution environment (e.g., a Java Virtual Machine, a Common Language Runtime, a high-level language virtual machine, an interpreter, etc.) or may be compiled directly into object code.
- an abstract execution environment e.g., a Java Virtual Machine, a Common Language Runtime, a high-level language virtual machine, an interpreter, etc.
- the abstract execution environment may convert the intermediate form program code into processor specific code by, 1) compiling the intermediate form program code (e.g., at run-time (e.g., a JIT compiler)), 2) interpreting the intermediate form program code, or 3) a combination of compiling the intermediate form program code at run-time and interpreting the intermediate form program code.
- Abstract execution environments may run on various operating systems (such as UNIX, LINUX, Microsoft operating systems including the Windows family, Apple Computers operating systems including MacOS X, Sun/Solaris, OS/2, Novell, etc.).
- An article of manufacture may be used to store program code.
- An article of manufacture that stores program code may be embodied as, but is not limited to, one or more memories (e.g., one or more flash memories, random access memories (static, dynamic or other)), optical disks, CD-ROMs, DVD ROMs, EPROMs, EEPROMs, magnetic or optical cards or other type of machine-readable media suitable for storing electronic instructions.
- Program code may also be downloaded from a remote computer (e.g., a server) to a requesting computer (e.g., a client) by way of data signals embodied in a propagation medium (e.g., via a communication link (e.g., a network connection)).
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
Description
Claims
Priority Applications (6)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020137016866A KR101494559B1 (en) | 2010-12-22 | 2011-12-05 | Vector conflict instructions |
| BR112013015793A BR112013015793A2 (en) | 2010-12-22 | 2011-12-05 | Method, core processing implemented on a semiconductor chip and computing system |
| DE112011104555.7T DE112011104555B4 (en) | 2010-12-22 | 2011-12-05 | Vector Conflict Instructions |
| GB1311032.5A GB2500337B (en) | 2010-12-22 | 2011-12-05 | Vector conflict instructions |
| CN201180068158.7A CN103502934B (en) | 2010-12-22 | 2011-12-05 | Vector conflict instructions |
| JP2013546180A JP2014504418A (en) | 2010-12-22 | 2011-12-05 | Vector conflict instructions |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US12/976,616 US8972698B2 (en) | 2010-12-22 | 2010-12-22 | Vector conflict instructions |
| US12/976,616 | 2010-12-22 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| WO2012087548A2 true WO2012087548A2 (en) | 2012-06-28 |
| WO2012087548A3 WO2012087548A3 (en) | 2012-08-16 |
Family
ID=46314722
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/US2011/063307 Ceased WO2012087548A2 (en) | 2010-12-22 | 2011-12-05 | Vector conflict instructions |
Country Status (8)
| Country | Link |
|---|---|
| US (1) | US8972698B2 (en) |
| JP (2) | JP2014504418A (en) |
| KR (1) | KR101494559B1 (en) |
| CN (1) | CN103502934B (en) |
| BR (1) | BR112013015793A2 (en) |
| DE (1) | DE112011104555B4 (en) |
| GB (1) | GB2500337B (en) |
| WO (1) | WO2012087548A2 (en) |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20140181466A1 (en) * | 2011-12-29 | 2014-06-26 | Andrew Thomas Forsyth | Processors having fully-connected interconnects shared by vector conflict instructions and permute instructions |
| KR20140113545A (en) * | 2013-03-14 | 2014-09-24 | 인텔 코오퍼레이션 | Multiple data element-to-multiple data element comparison processors, methods, systems, and instructions |
| JP2015530674A (en) * | 2012-09-28 | 2015-10-15 | インテル・コーポレーション | Multiple systems, multiple devices, and multiple methods for performing conflict detection and broadcasting multiple contents of a register to multiple data element locations of another register |
| GB2619904A (en) * | 2022-03-10 | 2023-12-27 | Advanced Risc Mach Ltd | Data processing apparatus, method and virtual machine |
Families Citing this family (53)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP2695054B1 (en) | 2011-04-01 | 2018-08-15 | Intel Corporation | Vector friendly instruction format and execution thereof |
| US20120260062A1 (en) * | 2011-04-07 | 2012-10-11 | International Business Machines Corporation | System and method for providing dynamic addressability of data elements in a register file with subword parallelism |
| US9021233B2 (en) | 2011-09-28 | 2015-04-28 | Arm Limited | Interleaving data accesses issued in response to vector access instructions |
| US10318291B2 (en) | 2011-11-30 | 2019-06-11 | Intel Corporation | Providing vector horizontal compare functionality within a vector register |
| WO2013081588A1 (en) * | 2011-11-30 | 2013-06-06 | Intel Corporation | Instruction and logic to provide vector horizontal compare functionality |
| CN104011670B (en) | 2011-12-22 | 2016-12-28 | 英特尔公司 | The instruction of one of two scalar constants is stored for writing the content of mask based on vector in general register |
| US10055225B2 (en) * | 2011-12-23 | 2018-08-21 | Intel Corporation | Multi-register scatter instruction |
| US9766887B2 (en) * | 2011-12-23 | 2017-09-19 | Intel Corporation | Multi-register gather instruction |
| US9459867B2 (en) | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Instruction to load data up to a specified memory boundary indicated by the instruction |
| US9454367B2 (en) | 2012-03-15 | 2016-09-27 | International Business Machines Corporation | Finding the length of a set of character data having a termination character |
| US9268566B2 (en) | 2012-03-15 | 2016-02-23 | International Business Machines Corporation | Character data match determination by loading registers at most up to memory block boundary and comparing |
| US9588762B2 (en) | 2012-03-15 | 2017-03-07 | International Business Machines Corporation | Vector find element not equal instruction |
| US9459868B2 (en) | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Instruction to load data up to a dynamically determined memory boundary |
| US9710266B2 (en) | 2012-03-15 | 2017-07-18 | International Business Machines Corporation | Instruction to compute the distance to a specified memory boundary |
| US9459864B2 (en) * | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Vector string range compare |
| US9715383B2 (en) | 2012-03-15 | 2017-07-25 | International Business Machines Corporation | Vector find element equal instruction |
| US9454366B2 (en) | 2012-03-15 | 2016-09-27 | International Business Machines Corporation | Copying character data having a termination character from one memory location to another |
| US9280347B2 (en) | 2012-03-15 | 2016-03-08 | International Business Machines Corporation | Transforming non-contiguous instruction specifiers to contiguous instruction specifiers |
| US9355068B2 (en) * | 2012-06-29 | 2016-05-31 | Intel Corporation | Vector multiplication with operand base system conversion and re-conversion |
| US10095516B2 (en) | 2012-06-29 | 2018-10-09 | Intel Corporation | Vector multiplication with accumulation in large register space |
| US9298456B2 (en) * | 2012-08-21 | 2016-03-29 | Apple Inc. | Mechanism for performing speculative predicated instructions |
| US9842046B2 (en) | 2012-09-28 | 2017-12-12 | Intel Corporation | Processing memory access instructions that have duplicate memory indices |
| KR20150064197A (en) | 2012-12-26 | 2015-06-10 | 인텔 코포레이션 | Coalescing adjacent gather/scatter operations |
| US9804839B2 (en) * | 2012-12-28 | 2017-10-31 | Intel Corporation | Instruction for determining histograms |
| US9442723B2 (en) * | 2012-12-28 | 2016-09-13 | Intel Corporation | Method and apparatus for integral image computation instructions |
| US9372692B2 (en) | 2012-12-29 | 2016-06-21 | Intel Corporation | Methods, apparatus, instructions, and logic to provide permute controls with leading zero count functionality |
| US9411584B2 (en) | 2012-12-29 | 2016-08-09 | Intel Corporation | Methods, apparatus, instructions, and logic to provide vector address conflict detection functionality |
| US9411592B2 (en) | 2012-12-29 | 2016-08-09 | Intel Corporation | Vector address conflict resolution with vector population count functionality |
| US9817663B2 (en) | 2013-03-19 | 2017-11-14 | Apple Inc. | Enhanced Macroscalar predicate operations |
| US9348589B2 (en) | 2013-03-19 | 2016-05-24 | Apple Inc. | Enhanced predicate registers having predicates corresponding to element widths |
| US9606803B2 (en) * | 2013-07-15 | 2017-03-28 | Texas Instruments Incorporated | Highly integrated scalable, flexible DSP megamodule architecture |
| US9880839B2 (en) * | 2014-04-24 | 2018-01-30 | Intel Corporation | Instruction that performs a scatter write |
| JP6253514B2 (en) | 2014-05-27 | 2017-12-27 | ルネサスエレクトロニクス株式会社 | Processor |
| US20160179550A1 (en) * | 2014-12-23 | 2016-06-23 | Intel Corporation | Fast vector dynamic memory conflict detection |
| US9891913B2 (en) * | 2014-12-23 | 2018-02-13 | Intel Corporation | Method and apparatus for performing conflict detection using vector comparison operations |
| US10203955B2 (en) * | 2014-12-31 | 2019-02-12 | Intel Corporation | Methods, apparatus, instructions and logic to provide vector packed tuple cross-comparison functionality |
| US10423411B2 (en) | 2015-09-26 | 2019-09-24 | Intel Corporation | Data element comparison processors, methods, systems, and instructions |
| US20170185413A1 (en) * | 2015-12-23 | 2017-06-29 | Intel Corporation | Processing devices to perform a conjugate permute instruction |
| WO2017107125A1 (en) | 2015-12-24 | 2017-06-29 | Intel Corporation | Conflict mask generation |
| CN107315563B (en) * | 2016-04-26 | 2020-08-07 | 中科寒武纪科技股份有限公司 | An apparatus and method for performing vector comparison operations |
| US10191744B2 (en) | 2016-07-01 | 2019-01-29 | Intel Corporation | Apparatuses, methods, and systems for element sorting of vectors |
| CN109313552A (en) * | 2016-07-27 | 2019-02-05 | 英特尔公司 | System and method for multiplexed vector comparison |
| US10564964B2 (en) * | 2016-08-23 | 2020-02-18 | International Business Machines Corporation | Vector cross-compare count and sequence instructions |
| US11436010B2 (en) | 2017-06-30 | 2022-09-06 | Intel Corporation | Method and apparatus for vectorizing indirect update loops |
| US11362215B2 (en) | 2018-03-30 | 2022-06-14 | Intel Corporation | Top-gate doped thin film transistor |
| US11257956B2 (en) | 2018-03-30 | 2022-02-22 | Intel Corporation | Thin film transistor with selectively doped oxide thin film |
| US11163564B1 (en) * | 2018-10-08 | 2021-11-02 | Verisilicon Microelectronics (Shanghai) Co., Ltd. | Vector compare and store instruction that stores index values to memory |
| US11327862B2 (en) | 2019-05-20 | 2022-05-10 | Micron Technology, Inc. | Multi-lane solutions for addressing vector elements using vector index registers |
| US11507374B2 (en) * | 2019-05-20 | 2022-11-22 | Micron Technology, Inc. | True/false vector index registers and methods of populating thereof |
| US11340904B2 (en) | 2019-05-20 | 2022-05-24 | Micron Technology, Inc. | Vector index registers |
| US11403256B2 (en) | 2019-05-20 | 2022-08-02 | Micron Technology, Inc. | Conditional operations in a vector processor having true and false vector index registers |
| GB2599652B (en) | 2020-10-06 | 2023-01-18 | Advanced Risc Mach Ltd | Masked-vector-comparison instruction |
| CN116382782A (en) * | 2021-12-20 | 2023-07-04 | 深圳市中兴微电子技术有限公司 | Vector calculation method, vector calculator, electronic device and storage medium |
Family Cites Families (33)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0320864A (en) * | 1989-05-20 | 1991-01-29 | Fujitsu Ltd | Information processor having vector instruction set for fuzzy calculation |
| JP2621555B2 (en) * | 1990-03-12 | 1997-06-18 | 日本電気株式会社 | Vectorization processing method |
| JP2002108837A (en) * | 2000-09-29 | 2002-04-12 | Nec Corp | Computer system and method for controlling its calculation |
| CN1324861C (en) * | 2002-10-03 | 2007-07-04 | In4S公司 | Method and device for verifying bit string |
| US7617496B2 (en) | 2004-04-23 | 2009-11-10 | Apple Inc. | Macroscalar processor architecture |
| US7395419B1 (en) | 2004-04-23 | 2008-07-01 | Apple Inc. | Macroscalar processor architecture |
| US7730282B2 (en) * | 2004-08-11 | 2010-06-01 | International Business Machines Corporation | Method and apparatus for avoiding data dependency hazards in a microprocessor pipeline architecture using a multi-bit age vector |
| US20080091924A1 (en) * | 2006-10-13 | 2008-04-17 | Jouppi Norman P | Vector processor and system for vector processing |
| US7624251B2 (en) | 2006-11-01 | 2009-11-24 | Apple Inc. | Instructions for efficiently accessing unaligned partial vectors |
| US7620797B2 (en) | 2006-11-01 | 2009-11-17 | Apple Inc. | Instructions for efficiently accessing unaligned vectors |
| US7660952B2 (en) * | 2007-03-01 | 2010-02-09 | International Business Machines Corporation | Data bus bandwidth scheduling in an FBDIMM memory system operating in variable latency mode |
| US8019977B2 (en) | 2007-05-14 | 2011-09-13 | Apple Inc. | Generating predicate values during vector processing |
| US8078847B2 (en) | 2007-05-14 | 2011-12-13 | Apple Inc. | Detecting memory-hazard conflicts during vector processing |
| US8019976B2 (en) | 2007-05-14 | 2011-09-13 | Apple, Inc. | Memory-hazard detection and avoidance instructions for vector processing |
| US8060728B2 (en) | 2007-05-14 | 2011-11-15 | Apple Inc. | Generating stop indicators during vector processing |
| US8600120B2 (en) | 2008-01-03 | 2013-12-03 | Apple Inc. | Personal computing device control using face detection and recognition |
| US9513905B2 (en) | 2008-03-28 | 2016-12-06 | Intel Corporation | Vector instructions to enable efficient synchronization and parallel reduction operations |
| US8446426B2 (en) | 2008-04-28 | 2013-05-21 | Apple Inc. | Technique for visually compositing a group of graphical objects |
| US8271832B2 (en) | 2008-08-15 | 2012-09-18 | Apple Inc. | Non-faulting and first-faulting instructions for processing vectors |
| US20100325399A1 (en) * | 2008-08-15 | 2010-12-23 | Apple Inc. | Vector test instruction for processing vectors |
| US8959316B2 (en) | 2008-08-15 | 2015-02-17 | Apple Inc. | Actual instruction and actual-fault instructions for processing vectors |
| US8209525B2 (en) | 2008-08-15 | 2012-06-26 | Apple Inc. | Method and apparatus for executing program code |
| US20110035568A1 (en) | 2008-08-15 | 2011-02-10 | Apple Inc. | Select first and select last instructions for processing vectors |
| US8417921B2 (en) | 2008-08-15 | 2013-04-09 | Apple Inc. | Running-min and running-max instructions for processing vectors using a base value from a key element of an input vector |
| US8745360B2 (en) | 2008-09-24 | 2014-06-03 | Apple Inc. | Generating predicate values based on conditional data dependency in vector processors |
| US8176299B2 (en) | 2008-09-24 | 2012-05-08 | Apple Inc. | Generating stop indicators based on conditional data dependency in vector processors |
| US8181001B2 (en) | 2008-09-24 | 2012-05-15 | Apple Inc. | Conditional data-dependency resolution in vector processors |
| US7800519B2 (en) | 2008-09-30 | 2010-09-21 | Apple Inc. | Method and apparatus for compressing and decompressing data |
| US8310494B2 (en) | 2008-09-30 | 2012-11-13 | Apple Inc. | Method for reducing graphics rendering failures |
| US7728742B2 (en) | 2008-09-30 | 2010-06-01 | Apple Inc. | Method and apparatus for compressing and decompressing data |
| US8868847B2 (en) | 2009-03-11 | 2014-10-21 | Apple Inc. | Multi-core processor snoop filtering |
| US8433883B2 (en) | 2009-06-11 | 2013-04-30 | Cray Inc. | Inclusive “OR” bit matrix compare resolution of vector update conflict masks |
| US8688957B2 (en) * | 2010-12-21 | 2014-04-01 | Intel Corporation | Mechanism for conflict detection using SIMD |
-
2010
- 2010-12-22 US US12/976,616 patent/US8972698B2/en active Active
-
2011
- 2011-12-05 KR KR1020137016866A patent/KR101494559B1/en active Active
- 2011-12-05 GB GB1311032.5A patent/GB2500337B/en active Active
- 2011-12-05 BR BR112013015793A patent/BR112013015793A2/en not_active Application Discontinuation
- 2011-12-05 CN CN201180068158.7A patent/CN103502934B/en active Active
- 2011-12-05 DE DE112011104555.7T patent/DE112011104555B4/en active Active
- 2011-12-05 JP JP2013546180A patent/JP2014504418A/en active Pending
- 2011-12-05 WO PCT/US2011/063307 patent/WO2012087548A2/en not_active Ceased
-
2015
- 2015-10-27 JP JP2015211317A patent/JP6187988B2/en active Active
Cited By (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20140181466A1 (en) * | 2011-12-29 | 2014-06-26 | Andrew Thomas Forsyth | Processors having fully-connected interconnects shared by vector conflict instructions and permute instructions |
| US10678541B2 (en) * | 2011-12-29 | 2020-06-09 | Intel Corporation | Processors having fully-connected interconnects shared by vector conflict instructions and permute instructions |
| JP2015530674A (en) * | 2012-09-28 | 2015-10-15 | インテル・コーポレーション | Multiple systems, multiple devices, and multiple methods for performing conflict detection and broadcasting multiple contents of a register to multiple data element locations of another register |
| JP2017062845A (en) * | 2012-09-28 | 2017-03-30 | インテル・コーポレーション | Methods and apparatuses |
| KR20140113545A (en) * | 2013-03-14 | 2014-09-24 | 인텔 코오퍼레이션 | Multiple data element-to-multiple data element comparison processors, methods, systems, and instructions |
| JP2014179076A (en) * | 2013-03-14 | 2014-09-25 | Intel Corp | Multiple data element-to-multiple data element comparison processors, methods, systems, and instructions |
| GB2512728A (en) * | 2013-03-14 | 2014-10-08 | Intel Corp | Multiple data element-to-multiple data element comparison processors, methods, systems, and instructions |
| KR101596118B1 (en) | 2013-03-14 | 2016-02-19 | 인텔 코포레이션 | Multiple data element-to-multiple data element comparison processors, methods, systems, and instructions |
| GB2512728B (en) * | 2013-03-14 | 2019-01-30 | Intel Corp | Multiple data element-to-multiple data element comparison processors, methods, systems, and instructions |
| GB2619904A (en) * | 2022-03-10 | 2023-12-27 | Advanced Risc Mach Ltd | Data processing apparatus, method and virtual machine |
| GB2619904B (en) * | 2022-03-10 | 2024-07-03 | Advanced Risc Mach Ltd | Data processing apparatus, method and virtual machine |
| US12360767B2 (en) | 2022-03-10 | 2025-07-15 | Arm Limited | Data processing apparatus, method and virtual machine |
Also Published As
| Publication number | Publication date |
|---|---|
| US8972698B2 (en) | 2015-03-03 |
| JP2014504418A (en) | 2014-02-20 |
| US20120166761A1 (en) | 2012-06-28 |
| DE112011104555T5 (en) | 2013-09-26 |
| KR20130096315A (en) | 2013-08-29 |
| GB201311032D0 (en) | 2013-08-07 |
| BR112013015793A2 (en) | 2017-08-01 |
| JP2016028351A (en) | 2016-02-25 |
| CN103502934B (en) | 2017-01-18 |
| KR101494559B1 (en) | 2015-02-17 |
| GB2500337B (en) | 2020-07-15 |
| GB2500337A (en) | 2013-09-18 |
| WO2012087548A3 (en) | 2012-08-16 |
| JP6187988B2 (en) | 2017-08-30 |
| CN103502934A (en) | 2014-01-08 |
| DE112011104555B4 (en) | 2023-03-30 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8972698B2 (en) | Vector conflict instructions | |
| KR102496402B1 (en) | User-level fork and join processors, methods, systems, and instructions | |
| KR101832656B1 (en) | Memory reference metadata for compiler optimization | |
| CN107003837B (en) | Lightweight constrained transactional memory for speculative compiler optimization | |
| US7877585B1 (en) | Structured programming control flow in a SIMD architecture | |
| EP2176763B1 (en) | Memory transaction grouping | |
| CN108885551B (en) | Memory copy instruction, processor, method and system | |
| JP6092400B2 (en) | Instruction to shift multiple bits to the left and pull multiple 1s into multiple lower bits | |
| EP3416049B1 (en) | Methods and systems for inter-pipeline data hazard avoidance | |
| US9141386B2 (en) | Vector logical reduction operation implemented using swizzling on a semiconductor chip | |
| BR102013032654A2 (en) | instructions and logic for vectoring conditional loops | |
| TWI467476B (en) | Processing core, method and computing system of scalar integer instructions capable of execution with three registers | |
| EP3014424B1 (en) | Instruction order enforcement pairs of instructions, processors, methods, and systems | |
| US9715388B2 (en) | Instruction and logic to monitor loop trip count and remove loop optimizations | |
| US10095520B2 (en) | Interrupt return instruction with embedded interrupt service functionality | |
| CN114610394A (en) | Instruction scheduling method, processing circuit and electronic equipment | |
| US9336156B2 (en) | Method and apparatus for cache line state update in sectored cache with line state tracker | |
| US8683178B2 (en) | Sharing a fault-status register when processing vector instructions | |
| US11593114B1 (en) | Iterating group sum of multiple accumulate operations | |
| US10996960B1 (en) | Iterating single instruction, multiple-data (SIMD) instructions | |
| JP2023013799A (en) | Arithmetic processing device and arithmetic processing method | |
| CN113330418A (en) | Workload-oriented constant propagation for compilers |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 11851435 Country of ref document: EP Kind code of ref document: A2 |
|
| ENP | Entry into the national phase |
Ref document number: 1311032 Country of ref document: GB Kind code of ref document: A Free format text: PCT FILING DATE = 20111205 |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 1311032.5 Country of ref document: GB |
|
| ENP | Entry into the national phase |
Ref document number: 2013546180 Country of ref document: JP Kind code of ref document: A |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 112011104555 Country of ref document: DE Ref document number: 1120111045557 Country of ref document: DE |
|
| ENP | Entry into the national phase |
Ref document number: 20137016866 Country of ref document: KR Kind code of ref document: A |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 11851435 Country of ref document: EP Kind code of ref document: A2 |
|
| REG | Reference to national code |
Ref country code: BR Ref legal event code: B01A Ref document number: 112013015793 Country of ref document: BR |
|
| ENP | Entry into the national phase |
Ref document number: 112013015793 Country of ref document: BR Kind code of ref document: A2 Effective date: 20130621 |