发明名称 Copying character data having a termination character from one memory location to another
摘要 Copying characters of a set of terminated character data from one memory location to another memory location using parallel processing and without causing unwarranted exceptions. The character data to be copied is loaded within one or more vector registers. In particular, in one embodiment, an instruction (e.g., a Vector Load to block Boundary instruction) is used that loads data in parallel in a vector register to a specified boundary, and provides a way to determine the number of characters loaded. To determine the number of characters loaded (a count), another instruction (e.g., a Load Count to Block Boundary instruction) is used. Further, an instruction (e.g., a Vector Find Element Not Equal instruction) is used to find the index of the first delimiter character, i.e., the first termination character, such as a zero or null character within the character data. This instruction checks a plurality of bytes of data in parallel.
申请公布号 US9286064(B2) 申请公布日期 2016.03.15
申请号 US201213421498 申请日期 2012.03.15
申请人 INTERNATIONAL BUSINESS MACHINES CORPORATION 发明人 Bradbury Jonathan D.;Gschwind Michael K.;Slegel Timothy J.
分类号 G06F12/00;G06F9/30 主分类号 G06F12/00
代理机构 Heslin Rothenberg Farley & Mesiti P.C. 代理人 Kinnaman, Esq. William A.;Hulihan, Esq. Matthew M.;Heslin Rothenberg Farley & Mesiti P.C.
主权项 1. A computer program product for copying a set of data, the computer program product comprising: a non-transitory computer readable storage medium readable by a processing circuit and storing instructions for execution by the processing circuit for performing a method comprising: loading from memory to a register data that is within a specified block of memory, the data being at least a portion of the set of data to be copied, and wherein the loading comprises loading from a starting address in memory to an ending address in memory, wherein the ending address is computed using a boundary size of the specified block of memory and a boundary mask, the boundary mask determined based on the boundary size and used to determine closeness to a specified boundary, and wherein a variable number of bytes of data are loaded from memory absent crossing the specified boundary of the block of memory from which the data is being loaded in the register, the variable number based on the starting address and the ending address;obtaining a count of an amount of data loaded in the register;determining, by a processor, a termination value for the data loaded in the register, the determining comprising checking the data to determine whether the register includes a termination character, and based on the register including the termination character, setting the termination value to a location of the termination character, and based on the register not including the termination character, setting the termination value to a pre-specified value;storing the data loaded in the register in memory at a selected location;checking whether there is additional data in the set of data to be copied based on at least one of the count and the termination value; andbased on the checking indicating additional data is to be copied, copying the additional data.
地址 Armonk NY US