ES2869865T3 - Método y aparato para realizar operaciones de recolección y copia SIMD - Google Patents

Método y aparato para realizar operaciones de recolección y copia SIMD Download PDF

Info

Publication number
ES2869865T3
ES2869865T3 ES17729733T ES17729733T ES2869865T3 ES 2869865 T3 ES2869865 T3 ES 2869865T3 ES 17729733 T ES17729733 T ES 17729733T ES 17729733 T ES17729733 T ES 17729733T ES 2869865 T3 ES2869865 T3 ES 2869865T3
Authority
ES
Spain
Prior art keywords
memory
processor
addresses
simd
copy
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.)
Active
Application number
ES17729733T
Other languages
English (en)
Inventor
Eric Wayne Mahurin
Jakub Pawal GOLAB
Lucian Codrescu
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2869865T3 publication Critical patent/ES2869865T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Memory System (AREA)
  • Executing Machine-Instructions (AREA)
  • Image Processing (AREA)
  • Display Devices Of Pinball Game Machines (AREA)

Abstract

Un método de realizar instrucciones de operación de memoria de Una Instrucción Múltiples Datos, SIMD, comprendiendo el método: proporcionar (302), por parte de un procesador (102), dos o más direcciones de origen y dos o más direcciones de destino correspondientes de una memoria (114) a un búfer de entrada de transacción (106); en donde las dos o más direcciones de origen son no contiguas; y en donde las dos o más direcciones de destino son no contiguas en la memoria; y suministrar, por parte del búfer de entrada de transacción, las dos o más direcciones de origen y dos o más direcciones de destino correspondientes a un secuenciador de transacción (110); y ejecutar (304), por parte de la memoria (114), dos o más instrucciones suministradas por el secuenciador de transacción, para copiar los dos o más elementos de datos desde las dos o más direcciones de origen a dos o más direcciones de destino correspondientes dentro de la memoria, sin una copia intermedia a un registro en el procesador.

Description

DESCRIPCIÓN
Método y aparato para realizar operaciones de recolección y copia SIMD
Campo de la divulgación
Los aspectos divulgados están dirigidos a instrucciones de procesador e implementaciones eficientes de estas. Más específicamente, los aspectos ejemplares se refieren a instrucciones de memoria eficaces que implican múltiples elementos de datos, tales como instrucciones relativas a copia, distribución, recolección de memoria, y combinaciones de estas.
Antecedentes
Las instrucciones de una instrucción múltiples datos (SIMD) pueden ser usadas en sistemas de procesamiento para aprovechar el paralelismo de datos. El paralelismo de datos existe cuando una tarea igual o común debe ser realizada en dos o más elementos de datos de un vector de datos, por ejemplo. En vez de usar múltiples instrucciones, la tarea común puede ser realizada en los dos o más elementos de datos en paralelo usando una única instrucción SIMD que define la misma instrucción que debe realizarse en múltiples elementos de datos en múltiples carriles SIMD correspondientes. Las instrucciones SIMD pueden ser usadas para variedad de operaciones tales como operaciones aritméticas, operaciones de movimiento de datos, operaciones de memoria, etc. Con respecto a las operaciones de memoria, “distribuir” y “recolectar” son operaciones bien conocidas para copiar elementos de datos desde una ubicación a otra. Los elementos de datos pueden estar ubicados en una memoria (p. ej., una memoria principal o disco duro) y los registros especificados en las operaciones pueden estar ubicados en un procesador o sistema en chip (SoC).
Aunque una instrucción de carga convencional puede ser usada para leer un elemento de datos desde una ubicación de memoria dentro de un registro de destino escalar, p. ej., ubicado en el procesador, una instrucción “recolectar” es usada en cambio para cargar múltiples elementos de datos dentro de un registro de destino vectorial, p. ej., ubicado en el procesador. Cada uno de los múltiples elementos de datos puede tener direcciones de origen ortogonales o independientes (que pueden ser no contiguas en la memoria), lo que hace las implementaciones SIMD de una instrucción de recolección complicadas. Algunas implementaciones pueden ejecutar una instrucción de recolección a través de múltiples instrucciones de carga para cargar en serie cada elemento de datos dentro de su ubicación respectiva en el registro de destino vectorial hasta que el registro de destino vectorial está completo. Sin embargo, la serialización de esta manera conduce a rendimiento deficiente y cada instrucción de carga de componente puede tener una latencia variable dependiendo de dónde se origina cada elemento de datos (p. ej., algunas direcciones de origen pueden aparecer en una caché mientras que otras no; diferentes direcciones de origen pueden tener diferentes dependencias de datos, etc.). Si las instrucciones de carga de componente son implementadas para actualizar el registro de destino vectorial en orden, entonces puede no ser posible canalizar las actualizaciones en el software u ocultar el volumen de esta latencia variable usando mecanismos de procesamiento sin orden. Para implementaciones donde las actualizaciones sin orden de los registros de destino vectoriales son posibles, se puede incurrir en registros adicionales (p. ej., para almacenamiento temporal), mecanismos de seguimiento por elemento de datos para actualizaciones individuales, y otro soporte de hardware and/o software relacionado. Por lo tanto, las implementaciones convencionales de operaciones de recolección pueden ser ineficaces e implicar grandes latencias y hardware adicional.
Las operaciones de distribución pueden ser consideradas como una contrapartida de las operaciones de recolección descritas arriba, en donde elementos de datos de un registro vectorial de origen, p. ej., ubicado en un procesador, pueden estar almacenados en múltiples ubicaciones de memoria de destino que pueden ser no contiguas. Algunas secuencias de código o programas pueden implicar operaciones donde múltiples elementos de datos deben ser leídos desde ubicaciones de origen ortogonales o independientes (que pueden ser no contiguas en la memoria) y copiados o escritos en ubicaciones de destino ortogonales o independientes (que también pueden ser no contiguas en la memoria). Tales operaciones pueden ser consideradas como múltiples operaciones de copia en múltiples elementos de datos. Por lo tanto, es deseable usar procesamiento SIMD en tales operaciones para implementar un comportamiento de copiado SIMD de múltiples elementos de datos desde ubicaciones de origen ortogonales a ubicaciones de destino ortogonales en la memoria.
Aunque en teoría, tal funcionalidad puede ser lograda a través de una recolección SIMD de los múltiples elementos de datos desde las múltiples ubicaciones de origen en la memoria hasta un registro vectorial de destino de recolección ubicado en el procesador y luego realizar una distribución SIMD de los elementos de datos desde el registro vectorial de destino de recolección hasta las múltiples ubicaciones de destino en la memoria, las implementaciones de tal funcionalidad pueden no ser prácticas o factibles. Esto se debe a que esperar a que el registro vectorial de destino de recolección esté completo introduce las ineficacias descritas arriba de las implementaciones convencionales de las operaciones de recolección SIMD. La sincronización entre las cargas de componente de la recolección SIMD y los almacenamientos de componente de la operación de distribución SIMD también es complicada si la copia SIMD debiera ser implementada sin esperar a que el registro vectorial de destino de recolección esté completo primero, antes de permitir que la distribución SIMD proceda. Además, implementar una recolección SIMD después de una distribución SIMD para ejecutar una copia SIMD puede implicar la transferencia de un gran número de elementos de datos desde las ubicaciones de origen en la memoria usando el registro vectorial de destino de recolección en el procesador como un punto de llegada intermedio, y luego de vuelta hasta ubicaciones de destino en la memoria. Como puede apreciarse, tales grandes transferencias de datos de un lado para otro entre la memoria y el procesador aumenta el consumo de energía y la latencia de la copia SIMD.
Correspondientemente, hay una necesidad de implementaciones mejoradas de las operaciones de memoria descritas arriba para aprovechar los beneficios del procesamiento SIMD, mientras se evitan los inconvenientes anteriormente mencionados de implementaciones convencionales La publicación internacional WO 2007/071606 A2 (28 de junio de 2007) divulga un sistema, método, y medio legible por ordenador para copiar semisincrónicamente datos desde una primera porción de memoria a una segunda porción de memoria usando una instrucción de operación de copia de memoria semisincrónica. La instrucción de copia de memoria es puesta en cola a través de una unidad no cacheable para un controlador de memoria. Por ejemplo, la NCU 206 permite que la instrucción de copia de memoria sea puesta en cola directamente dentro de la cola de instrucción de memoria sin primero ser cargada dentro de la caché Li-I. La publicación internacional WO 2010/088129 A1 (5 de agosto de 2010) divulga un método para ejecutar instrucciones de transferencia de memoria en un procesador. En un modo de realización, el método incluye usar instrucciones de transferencia de memoria que permiten que datos en una ubicación de memoria de origen sean copiados a una ubicación de memoria de destino sin el uso de instrucciones de palabra de carga y palabra de almacenamiento. Sumario
Los aspectos ejemplares de la invención están dirigidos a sistemas y método para operaciones de memoria eficaces. Una operación de recolección de una instrucción múltiples datos (SIMD) es implementada con un búfer de resultados de recolección ubicado dentro o en proximidad cercana a la memoria, para recibir o recolectar múltiples elementos de datos desde múltiples ubicaciones ortogonales en una memoria, y una vez que el búfer de resultados de recolección está completo, los datos recolectados son transferidos a un registro de procesador. En un modo de realización, una operación de copia SIMD es realizada ejecutando dos o más instrucciones para copiar múltiples elementos de datos desde múltiples direcciones de origen ortogonales a múltiples direcciones de destino correspondientes dentro de la memoria, sin una copia intermedia a un registro de procesador. Por lo tanto, las operaciones de memoria son realizadas en un modo en segundo plano sin dirección por parte del procesador.
Por ejemplo, un aspecto ejemplar está dirigido a un método de realizar una operación de memoria, comprendiendo el método: proporcionar, por parte de un procesador, dos o más direcciones de origen de una memoria, copiar dos o más elementos de datos desde las dos o más direcciones de origen en la memoria a un búfer de resultados de recolección; y cargar los dos o más elementos de datos desde el búfer de resultados de recolección hasta un registro vectorial en el procesador usando una operación de carga de una instrucción múltiples datos (SIMD).
Un modo de realización está dirigido a un método de realizar una operación de memoria, comprendiendo el método: proporcionar, por parte de un procesador, dos o más direcciones de origen y dos o más direcciones de destino correspondientes de una memoria, y ejecutar dos o más instrucciones para copiar dos o más elementos de datos desde las dos o más direcciones de origen a dos o más direcciones de destino correspondientes dentro de la memoria, sin una copia intermedia a un registro en un procesador.
Otro aspecto ejemplar está dirigido a un aparato que comprende un procesador configurado para proporcionar dos o más direcciones de origen de una memoria, un búfer de resultados de recolección configurado para recibir dos o más elementos de datos copiados desde las dos o más direcciones de origen en la memoria, y lógica configurada para cargar los dos o más elementos de datos desde el búfer de resultados de recolección hasta un registro vectorial en el procesador basándose en una operación de carga de una instrucción múltiples datos (SIMD) ejecutada por el procesador.
Otro modo de realización está dirigido a un aparato que comprende: un procesador configurado para proporcionar dos o más direcciones de origen y dos o más direcciones de destino correspondientes de una memoria, y lógica configurada para copiar dos o más elementos de datos desde las dos o más direcciones de origen a dos o más direcciones de destino correspondientes dentro de la memoria, sin una copia intermedia a un registro en un procesador.
Descripción breve de los dibujos
Los dibujos adjuntos están presentados para ayudar en la descripción de modos de realización de la invención y están proporcionados solamente para la ilustración de los modos de realización y no la limitación de estos.
La FIG. 1 ilustra un sistema de procesamiento configurado de acuerdo con aspectos ejemplares de esta divulgación. Las FIG. 2-3 ilustran procesos relativos a operaciones de memoria ejemplares de acuerdo con aspectos ejemplares de esta divulgación
La FIG. 4 ilustra un dispositivo de computación 400 ejemplar en el cual un aspecto de la divulgación puede ser ventajosamente empleado.
Descripción detallada
Aspectos de la invención están divulgados en la siguiente descripción y dibujos relativos dirigidos a modos de realización específicos de la invención. Modos de realización alternativos pueden ser concebidos sin alejarse del alcance de la invención. Adicionalmente, elementos bien conocidos de la invención no serán descritos en detalle o serán omitidos con el fin de no oscurecer los detalles relevantes de la invención.
La palabra “ejemplar” está usada aquí para decir “que sirve como un ejemplo, caso, o ilustración”. Todo modo de realización descrito aquí como “ejemplar” no se debe interpretar necesariamente como preferido o ventajoso por encima de otros modos de realización. Del mismo modo, el término “modos de realización de la invención” no requiere que todos los modos de realización de la invención incluyan la característica, ventaja o modo de operación discutido.
La terminología usada aquí es solo para el propósito de describir modos de realización particulares y no está destinada a ser limitante de los modos de realización de la invención. Como están usadas aquí, las formas singulares “un”, “uno”, y “el” están destinadas a incluir también las formas plurales, a menos que el contexto indique claramente lo contrario. Además se entenderá que los términos “comprende”, “que comprende”, “ incluye”, y/o “que incluye”, cuando están usados aquí, especifican la presencia de características, enteros, pasos, operaciones, elementos, y/o componentes indicados, pero no excluyen la presencia o adición de una o más otras características, enteros, pasos, operaciones, elementos, componentes y/o grupos de estos.
Además, los modos de realización están descritos en términos de secuencias de acciones que deben ser realizadas por, por ejemplo, elementos de un dispositivo de computación. Se reconocerá que varias acciones descritas aquí pueden ser realizadas por circuitos específicos (p. ej., circuitos integrados para aplicaciones específicas (ASIC)), por instrucciones de programa que son ejecutadas por uno o más procesadores, o por una combinación de ambos. Adicionalmente, se puede considerar que estas secuencias de acciones descritas aquí están integradas enteramente dentro de cualquier forma de medio de almacenamiento legible por ordenador que tiene almacenado dentro de este un conjunto correspondiente de instrucciones de computación que tras ejecutarse provocarían que un procesador asociado realice la funcionalidad descrita aquí. Por lo tanto, los diversos aspectos de la invención pueden estar integrados en un número de formas diferentes, todas las cuales han sido contempladas para estar dentro del alcance del objeto reivindicado. Además, para cada uno de los modos de realización descritos aquí, la forma correspondiente de cualquier tal modo de realización puede ser descrita aquí como, por ejemplo, “ lógica configurada para” realizar la acción descrita.
En un aspecto ejemplar de esta divulgación, una operación de recolección SIMD puede ser implementada dividiendo la operación en dos suboperaciones: una primera suboperación para recolectar múltiples elementos de datos (p. ej., desde ubicaciones ortogonales o independientes en una memoria, que pueden ser no contiguas) hasta un búfer de resultados de recolección; y una segunda suboperación para cargar desde el búfer de resultados de recolección hasta un registro SIMD, p. ej., ubicado en un procesador. La operación de recolección SIMD ejemplar puede ser separada mediante implementaciones de software (p. ej., un compilador) en las dos suboperaciones, y ellas pueden ser canalizadas para minimizar latencias (p. ej., usando mecanismos de canalización de software para la primera suboperación, para recolectar los múltiples elementos de datos dentro del búfer de resultados de recolección de una manera sin orden). El búfer de resultados de recolección puede estar ubicado dentro de la memoria o en proximidad a la memoria, y es distinguido de un registro vectorial de destino de recolección ubicado en un procesador. Por lo tanto, mecanismos de seguimiento por elemento no son necesarios para el búfer de resultados de recolección. Además, la segunda suboperación puede cargar múltiples elementos de datos desde el búfer de resultados de recolección hasta un registro de destino (p. ej., ubicado en el procesador) que puede acomodar los múltiples elementos de datos. Los elementos de datos pueden ser individualmente accesibles desde el registro de destino y pueden ser ordenados en función del orden en el búfer de resultados de recolección, lo que simplifica la operación de carga de los múltiples elementos de datos desde el búfer de resultados de recolección hasta el registro de destino (p. ej., la operación de carga puede parecerse a una carga escalar de los múltiples elementos de datos, más que a una carga vectorial que especifica la ubicación de cada uno de los múltiples elementos de datos). Correspondientemente, en un aspecto ejemplar, múltiples elementos de datos de ubicaciones de origen ortogonales pueden ser eficazmente recolectados dentro del registro de destino en el procesador mediante uso del búfer de resultados de recolección ubicado en la memoria.
En otro aspecto ejemplar de esta divulgación, elementos de datos de ubicaciones de origen ortogonales en la memoria pueden ser eficazmente copiadas en ubicaciones de destino ortogonales en la memoria. Por ejemplo, una operación de copia SIMD puede ser implementada usando una combinación de operaciones de recolección y operaciones de distribución, en donde la combinación puede ser eficazmente ejecutada dentro de la memoria. En este sentido, ejecutar la copia SIMD dentro de la memoria está destinado a transmitir que la operación es realizada sin usar registros ubicados en un procesador (tal como un registro vectorial de destino de recolección convencional ubicado en el procesador) para almacenamiento intermediario. Por ejemplo, ejecutar la combinación de operaciones de recolección y distribución dentro de la memoria puede implicar el uso de una red o un secuenciador ubicado en proximidad cercana a la memoria, a la vez que evita la transferencia de los elementos de datos entre la memoria y el procesador. Una instrucción de copia SIMd ejemplar con direccionamiento por elemento para múltiples elementos de datos puede especificar una lista de las direcciones de origen o recolección desde las que copiar los múltiples elementos de datos y una lista correspondiente de direcciones de destino o distribución en las que los múltiples elementos de datos se deben escribir. A partir de estas listas, múltiples operaciones de copia pueden ser realizadas de una manera ortogonal o independiente para copiar cada uno de los múltiples elementos de datos desde su dirección de origen respectiva a su dirección de destino respectiva. En aspectos ejemplares, se puede permitir que cada una de las múltiples operaciones de copia se completen sin requerir que un vector intermedio (p. ej., un vector de recolección) se complete nunca, permitiendo así un ordenamiento de memoria relajado y compleción sin orden de las múltiples operaciones de copia.
Con referencia ahora a la FIG. 1, un sistema de procesamiento 100 ejemplar, configurado de acuerdo con los aspectos ejemplares descritos arriba, será descrito. Como está mostrado, el sistema de procesamiento 100 puede incluir procesador 102 que puede estar configurado para implementar un canal de ejecución. En algunos aspectos, el canal de ejecución del procesador 102 puede soportar instrucciones vectoriales y más específicamente, procesamiento SIMD. Dos registros 103a y 103b han sido ilustrados en el procesador 102 para facilitar la descripción de aspectos ejemplares. Estos registros 103a-b pueden pertenecer a un fichero de registro (no mostrado), y en algunos aspectos, pueden ser registros vectoriales. Correspondientemente, el registro 103a puede ser un registro de origen y el registro 103b puede ser un registro vectorial para casos de ejemplo discutidos abajo. Por ejemplo, elementos de datos del registro 103a vectorial de origen pueden estar especificados en una operación de distribución convencional. El registro 103b vectorial de destino puede ser usado en operaciones de recolección SIMD ejemplares como está descrito abajo.
Para operaciones SIMD ejemplares, el búfer de entrada de transacción 106 puede recibir instrucciones del procesador 102, con direcciones para operandos de destino y de origen en el bus 104. Las direcciones de destino y de origen en el bus 104 pueden corresponder a la operación de recolección SIMD ejemplar (p. ej., para el registro 103b vectorial de destino) o la operación de copia SIMD ejemplar descrita previamente, y explicada más con referencia a las FIG. 2 y 3 abajo. El búfer de entrada de transacción 106 puede implementar un mecanismo de puesta en cola para poner en cola y transmitir retroalimentación en términos de afirmar la señal mostrada como disponibilidad 105, para transmitir si más instrucciones (u operandos relacionados) pueden ser recibidas desde el procesador 102 o no afirmando la disponibilidad 105 si la cola está llena.
Las instrucciones que están puestas en cola en el búfer de entrada de transacción 106 pueden ser transferidas en el bus 108 al secuenciador de transacción 110. En aspectos ejemplares, el secuenciador de transacción 110 puede estar configurado para serializar o paralelizar las instrucciones desde el bus 108 basándose en las operaciones y ajustes ajustables. Para operaciones de memoria, las direcciones de origen y/o de destino pueden ser proporcionadas a la memoria 114 en el bus 112 (junto con controles respectivos). El bus 112 está mostrado como un bus de dos vías, en el cual los datos pueden ser devueltos desde la memoria 114 (un control para la dirección de datos puede indicar si la transferencia de datos es desde la memoria 114 y hacia la memoria 114). En varias implementaciones alternativas, cables separados pueden ser usados para los buses de direcciones, control, y datos colectivamente mostrados como bus 112.
El sistema de procesamiento 100 también puede incluir elementos de procesamiento tales como los bloques mostrados como acceso de memoria contigua 120 y marcador 122. En un ejemplo, si una instrucción SIMD se refiere a recolectar elementos de datos desde ubicaciones de memoria contiguas, la instrucción SIMD puede ser ejecutada como una operación vectorial convencional para cargar datos desde ubicaciones de memoria contiguas dentro de un registro vectorial (p. ej., registro 103b) en el procesador 102, para lo cual el secuenciador de transacción 110 ejemplar puede ser evitado. El marcador 122 puede funcionar similarmente como búfer de entrada de transacción 106, y como tal puede implementar mecanismos de puesta en cola. En un aspecto, donde el marcador 122 recibe datos desde la memoria 114 para una operación vectorial convencional tal como una carga SIMD o una recolección SIMD desde ubicaciones de memoria contiguas, los múltiples elementos de datos pueden ser proporcionados a través del secuenciador de transacción 110 al marcador 122, y una vez que el vector de destino está completo, el vector de destino puede ser proporcionado al procesador 102 para ser actualizado en el registro 103b vectorial del procesador 102, por ejemplo. Las operaciones de elementos convencionales tales como acceso de memoria contigua 120 y marcador 122 han sido ilustradas para transmitir su capacidad para interoperar con los bloques ejemplares, el búfer de entrada de transacción 106 y el secuenciador de transacción 110 para operaciones de memoria.
Con referencia combinada a las FIG. 1-2, el proceso 200 relativo a una operación de recolección SIMD ejemplar será ahora explicado. Como está mostrado en el bloque 202, el procesador 102 puede proporcionar dos o más direcciones de origen, por ejemplo basándose en una instrucción de recolección o dos o más instrucciones de carga. Un compilador u otro software puede reconocer una operación de recolección SIMD y descomponerla en instrucciones de carga de componente para una operación de recolección SIMD ejemplar en algunos aspectos. Las dos o más direcciones de origen pueden ser ortogonales o independientes, y pueden referirse a ubicaciones no contiguas en la memoria 114. Las instrucciones de carga de componente pueden especificar registros contiguos o un registro vectorial de destino (p. ej., registro 103b) del procesador 102 dentro del cual dos o más elementos de datos se deben recolectar desde las dos o más direcciones de origen.
En el bloque 204, el procesador 102 puede implementar la operación de recolección SIMD ejemplar enviando las dos o más direcciones de origen al búfer de entrada de transacción 106, y desde allí hasta el secuenciador de transacción 110 en los buses 104 y 108. El secuenciador de transacción 110 puede proporcionar, ya sea en paralelo, o en serie, dos o más instrucciones para copiar los dos o más elementos de datos desde las dos o más direcciones de origen a un búfer de resultados de recolección (p. ej., BRR 115) ejemplarmente mostrado en la memoria 114. El búfer de resultados de recolección 115 puede ser un búfer circular implementado dentro de la memoria 114. En algunos aspectos, el búfer de resultados de recolección 115 puede estar ubicado fuera de la memoria 114 (p. ej., en proximidad más cercana a la memoria 114 que al procesador 102) y en comunicación con la memoria 114. En algunos aspectos el búfer de resultados de recolección 115 puede ser cualquier otra estructura de almacenamiento apropiada, y no necesariamente un búfer circular. Las dos o más operaciones de copia de los dos o más elementos de datos pueden implicar dos o más latencias diferentes. Además, las dos o más operaciones de copia de los dos o más elementos de datos para el búfer de resultados de recolección 115 pueden ser realizadas en segundo plano, p. ej., bajo la dirección del secuenciador de transacción 110 sin dirección por parte del procesador 102. Por lo tanto, el procesador 102 puede realizar otras operaciones (p. ej., utilizar una o más unidades de ejecución que no están mostradas explícitamente) mientras las múltiples operaciones de copia están siendo ejecutadas en segundo plano.
Una vez que el búfer de resultados de recolección 115 está completo, como está mostrado en el bloque 206, una instrucción de carga puede ser emitida para cargar los elementos de datos desde el búfer de resultados de recolección 115 hasta un registro vectorial tal como el registro 103b, en el procesador 102. La carga puede corresponder a una carga SIMD para cargar dos o más elementos de datos desde ubicaciones de memoria contiguas dentro del búfer de resultados de recolección 115 hasta dentro del registro vectorial 103b. El marcador 122 también puede ser utilizado para hacer seguimiento de cuántas operaciones de copia han sido realizadas para determinar si el búfer de resultados de recolección 115 está completo antes de que la instrucción de carga sea emitida. En algunos enfoques, una o más instrucciones de sincronización pueden ser ejecutadas (p. ej., mediante control de software) para garantizar que el búfer de resultados de recolección 115 está completo antes de cargar los elementos de datos desde el búfer de resultados de recolección 115 hasta dentro del registro vectorial 103b en el procesador 102. De esta forma, la latencia de las operaciones de copia para el búfer de resultados de recolección 115 puede ser ocultadas al procesador 102 y la instrucción de carga puede ser ejecutada con puntualidad precisa para evitar retrasos.
Con referencia combinada a las FIG. 1 y 3, el proceso 300 relativo a un modo de realización de la operación de copia SIMD será explicado. La operación de copia SIMD del proceso 300 puede lograr resultados equivalentes como una operación de recolección SIMD convencional seguida por una operación de distribución SIMD convencional. Sin embargo, la operación de copia SIMD puede ser implementada en un modo de realización con menos complejidad y latencia que implementando una operación de recolección SIMD seguida por una operación de distribución SIMD de una manera convencional.
Por ejemplo, con referencia al bloque 302, el procesador 102 puede proporcionar dos o más direcciones de origen y dos o más direcciones de destino correspondientes de la memoria 114. Las dos o más direcciones de origen y/o las dos o más direcciones de destino pueden ser ortogonales o independientes y no contiguas. Por ejemplo, un compilador puede descomponer una secuencia de recolección-para-distribución convencional de instrucciones o código en instrucciones de componente para suministrar las direcciones de origen y de destino al procesador 102. Una vez más, el procesador 102 puede proporcionar las dos o más direcciones de origen y dos o más direcciones de destino correspondientes al búfer de entrada de transacción 106. El búfer de entrada de transacción 106 puede suministrar las dos o más direcciones de origen y dos o más direcciones de destino correspondientes al secuenciador de transacción 110 (como está explicado con referencia al proceso 200 de la FIG. 2 arriba). El secuenciador de transacción 110 puede suministrar instrucciones a la memoria 114 para realizar las siguientes operaciones en el bloque 304.
En el bloque 304, las dos o más instrucciones pueden ser ejecutadas para copiar dos o más elementos de datos desde las dos o más direcciones de origen a dos o más direcciones de destino correspondientes dentro de la memoria, sin una copia intermedia a un registro de procesador en el procesador 102. Por ejemplo, elementos de red tales como secuenciador de transacción 110 puede ser utilizado sin transferir datos al procesador 102 durante la ejecución de las dos o más instrucciones para copiar. Correspondientemente, copiar los dos o más elementos de datos desde las dos o más direcciones de origen a dos o más direcciones de destino correspondientes dentro de la memoria (p. ej., operaciones de copia memoria-a-memoria) puede comprender ejecutar una instrucción de copia SIMD, en un modo en segundo plano sin dirección por parte del procesador 102. De esta manera, formar un resultado vectorial de recolección intermediario puede ser evitado, y en algunos casos, un vector de recolección completo puede no ser formado nunca por completo en la ejecución de las dos o más instrucciones para copiar. Una vez que la ejecución de las dos o más instrucciones para copiar está completada, el secuenciador de transacción 110 puede informar al marcador 122, y/o procesador 102 del estado de las dos o más operaciones de copia memoria-a-memoria como completas.
En referencia a la FIG. 4, un diagrama de bloque de un aspecto ilustrativo particular del dispositivo de computación 400 de acuerdo con aspectos ejemplares. El dispositivo de computación 400 incluye procesador 102 que puede estar configurado para soportar e implementar la ejecución de operaciones de memoria ejemplares de acuerdo con los procesos 200 y 300 de las FIG. 2-3, respectivamente. En la FIG. 4, el procesador 102 (que comprende registros 103a-b), búfer de entrada de transacción 106, secuenciador de transacción 110, y memoria 114 (que comprende búfer de resultados de recolección 115) de la FIG. 1 han sido específicamente identificados, mientras que los detalles restantes de la FIG. 1 han sido omitidos en esta representación en aras de la claridad. Aunque no están mostradas, una o más cachés u otras estructuras de memoria también pueden estar incluidas en el dispositivo de computación 400.
La FIG. 4 muestra el controlador de pantalla 426 acoplado al procesador 102 y a la pantalla 428. La FIG. 4 también muestra varios componentes que pueden ser bloques opcionales basados en implementaciones particulares del dispositivo de computación 400, p. ej., para comunicación inalámbrica. Correspondientemente, el codificador/descodificador (CODEC) 434 (p. ej., un CODEC de voz y/o audio) puede ser opcional y donde está presente, está acoplado al procesador 102, y el altavoz de bloques 436 y el micrófono 438 opcionales pueden estar acoplados al CODEC 434. El controlador inalámbrico 440 (que puede incluir un módem) también puede ser opcional y estar acoplado a una antena inalámbrica 442. En un aspecto particular, el procesador 402, controlador de pantalla 426, memoria 432, CODEC 434, y controlador inalámbrico 440 están incluidos en un dispositivo 422 de sistema en chip o sistema en paquete.
En un aspecto particular, el dispositivo de entrada 430 y el suministro de energía 444 están acoplados al dispositivo 422 de sistema en chip. Además, en un aspecto particular, como está ilustrado en la FIG. 4, la pantalla 428, el dispositivo de entrada 430, el altavoz 436, el micrófono 438, la antena inalámbrica 442, y el suministro de energía 444 son externos al dispositivo 422 de sistema en chip. Sin embargo, cada uno de la pantalla 428, el dispositivo de entrada 430, el altavoz 436, el micrófono 438, la antena inalámbrica 442, y el suministro de energía 444 puede estar acoplado a un componente del dispositivo 422 de sistema en chip, tal como una interfaz o un controlador.
Se debe señalar que aunque la FIG. 4 representa un dispositivo de comunicaciones inalámbrico, el procesador 102 y la memoria 114 también pueden estar integrados dentro de un descodificador, un reproductor de música, un reproductor de vídeo, una unidad de entretenimiento, un dispositivo de navegación, un asistente digital personal (PDA), una unidad de datos de ubicación fija, un dispositivo de comunicaciones, un servidor, o un ordenador. Además, al menos uno o más aspectos ejemplares del dispositivo 400 inalámbrico pueden estar integrados en al menos un dado semiconductor.
Aquellos expertos en la técnica apreciarán que la información y las señales pueden ser representadas usando cualquiera de una variedad de tecnologías y técnicas diferentes. Por ejemplo, los datos, las instrucciones, los comandos, la información, las señales, los bits, los símbolos, y los chips que pueden estar referenciados a lo largo de la descripción de arriba pueden ser representados por voltajes, corrientes, ondas electromagnéticas, campos o partículas magnéticos, campos o partículas ópticos, o cualquier combinación de estos.
Además, aquellos expertos en la técnica apreciarán que los varios bloques, módulos, circuitos, y pasos algorítmicos lógicos ilustrativos descritos en conexión con los modos de realización divulgados aquí pueden ser implementados como hardware electrónico, software de ordenador, o combinaciones de estos. Para ilustrar claramente esta intercambiabilidad de hardware y software, varios componentes, bloques, módulos, circuitos, y pasos ilustrativos han sido descritos arriba generalmente en términos de su funcionalidad. Si tal funcionalidad es implementada como hardware o software depende de la aplicación particular y restricciones de diseño impuestas sobre el sistema general. Los artesanos expertos pueden implementar la funcionalidad descrita de formas variables para cada aplicación particular, pero tales decisiones de implementación no deben ser interpretadas como causantes de una desviación del alcance de la presente invención.
Los métodos, secuencias y/o algoritmos descritos en conexión con los modos de realización divulgados aquí pueden estar integrados directamente en hardware, en un módulo de software ejecutado por un procesador, o en una combinación de ambos. Un módulo de software puede residir en memoria RAM, memoria flash, memoria ROM, memoria EPROM, memoria EEPROM, registros, disco duro, un disco extraíble, un CD-ROM, o cualquier otra forma de medio de almacenamiento conocida en la técnica. Un medio de almacenamiento ejemplar está acoplado al procesador de manera tal que el procesador puede leer información desde, y escribir información en, el medio de almacenamiento. En la alternativa, el medio de almacenamiento puede ser integral al procesador.
Correspondientemente, la invención no está limitada a los ejemplos ilustrados y cualquier medio para realizar la funcionalidad descrita aquí está incluido en el alcance de la invención como está definido por las reivindicaciones.
Aunque la divulgación anterior muestra modos de realización ilustrativos de la invención, se debe señalar que diversos cambios y modificaciones podrían ser hechos aquí sin apartarse del alcance de la invención como está definido por las reivindicaciones adjuntas. Las funciones, pasos y/o acciones de las reivindicaciones del método de conformidad con los modos de realización de la invención descritos aquí no necesitan ser realizados en ningún orden particular. Además, aunque los elementos de la invención pueden ser descritos o reivindicaciones en singular, el plural está contemplado a menos que la limitación al singular esté explícitamente indicada.

Claims (5)

REIVINDICACIONES
1. Un método de realizar instrucciones de operación de memoria de Una Instrucción Múltiples Datos, SIMD, comprendiendo el método:
proporcionar (302), por parte de un procesador (102), dos o más direcciones de origen y dos o más direcciones de destino correspondientes de una memoria (114) a un búfer de entrada de transacción (106);
en donde las dos o más direcciones de origen son no contiguas; y
en donde las dos o más direcciones de destino son no contiguas en la memoria; y
suministrar, por parte del búfer de entrada de transacción, las dos o más direcciones de origen y dos o más direcciones de destino correspondientes a un secuenciador de transacción (110); y
ejecutar (304), por parte de la memoria (114), dos o más instrucciones suministradas por el secuenciador de transacción, para copiar los dos o más elementos de datos desde las dos o más direcciones de origen a dos o más direcciones de destino correspondientes dentro de la memoria, sin una copia intermedia a un registro en el procesador.
2. El método de la reivindicación 1, en donde copiar cada elemento de datos desde las dos o más direcciones de origen a dos o más direcciones de destino correspondientes dentro de la memoria comprende ejecutar una instrucción de copia de una instrucción múltiples datos, SIMD.
3. El método de la reivindicación 2, que comprende ejecutar la instrucción de copia SIMD bajo la dirección del secuenciador de transacción sin dirección por parte del procesador.
4. Un aparato (400) que comprende:
un procesador (102) configurado para realizar instrucciones de operación de memoria SIMD, Una Instrucción Múltiples Datos, proporcionando dos o más direcciones de origen y dos o más direcciones de destino correspondientes de una memoria (114) a un búfer de entrada de transacción (106 ),
en donde las dos o más direcciones de origen son no contiguas; y
en donde las dos o más direcciones de destino son no contiguas en la memoria;
estando el búfer de entrada de transacción (106) configurado para suministrar las dos o más direcciones de origen y dos o más direcciones de destino correspondientes a un secuenciador de transacción (110);
estando el secuenciador de transacción configurado para suministrar dos o más instrucciones a la memoria (114), en donde la memoria comprende lógica configurada para copiar los dos o más elementos de datos desde las dos o más direcciones de origen a dos o más direcciones de destino correspondientes dentro de la memoria (114), sin una copia intermedia a un registro en el procesador (102).
5. El aparato de la reivindicación 4, que comprende lógica configurada para copiar los dos o más elementos de datos desde las dos o más direcciones de origen a dos o más direcciones de destino correspondientes bajo la dirección del secuenciador de transacción sin dirección por parte del procesador.
ES17729733T 2016-06-24 2017-06-06 Método y aparato para realizar operaciones de recolección y copia SIMD Active ES2869865T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/192,992 US20170371657A1 (en) 2016-06-24 2016-06-24 Scatter to gather operation
PCT/US2017/036041 WO2017222798A1 (en) 2016-06-24 2017-06-06 Method and apparatus for performing simd gather and copy operations

Publications (1)

Publication Number Publication Date
ES2869865T3 true ES2869865T3 (es) 2021-10-26

Family

ID=59054330

Family Applications (1)

Application Number Title Priority Date Filing Date
ES17729733T Active ES2869865T3 (es) 2016-06-24 2017-06-06 Método y aparato para realizar operaciones de recolección y copia SIMD

Country Status (9)

Country Link
US (1) US20170371657A1 (es)
EP (1) EP3475808B1 (es)
JP (1) JP7134100B2 (es)
KR (1) KR102507275B1 (es)
CN (1) CN109313548B (es)
BR (1) BR112018076270A8 (es)
ES (1) ES2869865T3 (es)
SG (1) SG11201810051VA (es)
WO (1) WO2017222798A1 (es)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10795678B2 (en) * 2018-04-21 2020-10-06 Microsoft Technology Licensing, Llc Matrix vector multiplier with a vector register file comprising a multi-port memory
US10782918B2 (en) * 2018-09-06 2020-09-22 Advanced Micro Devices, Inc. Near-memory data-dependent gather and packing
KR20210112949A (ko) 2020-03-06 2021-09-15 삼성전자주식회사 데이터 버스, 그것의 데이터 처리 방법 및 데이터 처리 장치

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761706A (en) * 1994-11-01 1998-06-02 Cray Research, Inc. Stream buffers for high-performance computer memory system
US5887183A (en) * 1995-01-04 1999-03-23 International Business Machines Corporation Method and system in a data processing system for loading and storing vectors in a plurality of modes
US6513107B1 (en) * 1999-08-17 2003-01-28 Nec Electronics, Inc. Vector transfer system generating address error exception when vector to be transferred does not start and end on same memory page
US7454585B2 (en) * 2005-12-22 2008-11-18 International Business Machines Corporation Efficient and flexible memory copy operation
US7484062B2 (en) * 2005-12-22 2009-01-27 International Business Machines Corporation Cache injection semi-synchronous memory copy operation
US8432409B1 (en) * 2005-12-23 2013-04-30 Globalfoundries Inc. Strided block transfer instruction
US8060724B2 (en) * 2008-08-15 2011-11-15 Freescale Semiconductor, Inc. Provision of extended addressing modes in a single instruction multiple data (SIMD) data processor
US9218183B2 (en) * 2009-01-30 2015-12-22 Arm Finance Overseas Limited System and method for improving memory transfer
US20120060016A1 (en) * 2010-09-07 2012-03-08 International Business Machines Corporation Vector Loads from Scattered Memory Locations
US8635431B2 (en) * 2010-12-08 2014-01-21 International Business Machines Corporation Vector gather buffer for multiple address vector loads
US8972697B2 (en) * 2012-06-02 2015-03-03 Intel Corporation Gather using index array and finite state machine
WO2013180738A1 (en) * 2012-06-02 2013-12-05 Intel Corporation Scatter using index array and finite state machine
US10049061B2 (en) * 2012-11-12 2018-08-14 International Business Machines Corporation Active memory device gather, scatter, and filter
US9563425B2 (en) * 2012-11-28 2017-02-07 Intel Corporation Instruction and logic to provide pushing buffer copy and store functionality

Also Published As

Publication number Publication date
BR112018076270A2 (pt) 2019-03-26
KR20190020672A (ko) 2019-03-04
US20170371657A1 (en) 2017-12-28
SG11201810051VA (en) 2019-01-30
JP2019525294A (ja) 2019-09-05
EP3475808B1 (en) 2021-04-14
EP3475808A1 (en) 2019-05-01
CN109313548B (zh) 2023-05-26
CN109313548A (zh) 2019-02-05
WO2017222798A1 (en) 2017-12-28
KR102507275B1 (ko) 2023-03-06
BR112018076270A8 (pt) 2023-01-31
JP7134100B2 (ja) 2022-09-09

Similar Documents

Publication Publication Date Title
US20170083313A1 (en) CONFIGURING COARSE-GRAINED RECONFIGURABLE ARRAYS (CGRAs) FOR DATAFLOW INSTRUCTION BLOCK EXECUTION IN BLOCK-BASED DATAFLOW INSTRUCTION SET ARCHITECTURES (ISAs)
RU2636675C2 (ru) Команды, процессоры, способы и системы доступа множественных регистров к памяти
US9678758B2 (en) Coprocessor for out-of-order loads
TWI697228B (zh) 用於密碼雜湊運算之硬體加速器
US10061591B2 (en) Redundancy elimination in single instruction multiple data/thread (SIMD/T) execution processing
ES2869865T3 (es) Método y aparato para realizar operaciones de recolección y copia SIMD
US20180121386A1 (en) Super single instruction multiple data (super-simd) for graphics processing unit (gpu) computing
CN108475193A (zh) 字节排序指令和四位组排序指令
JP5758515B2 (ja) バイパスマルチプルインスタンス化テーブルを用いた移動除去のためのシステム及び方法
CN108369511A (zh) 用于基于通道的跨步存储操作的指令和逻辑
TWI525537B (zh) 具有為向量衝突指令與置換指令所共享的全連接互連的處理器
JP2014182810A (ja) デフレート圧縮のために高速で高圧縮のlz77トークン化及びハフマンエンコーディングを行う並列装置
JP7084379B2 (ja) ロードストアユニットをバイパスすることによるストア及びロードの追跡
EP3326060B1 (en) Mixed-width simd operations having even-element and odd-element operations using register pair for wide data elements
US10120693B2 (en) Fast multi-width instruction issue in parallel slice processor
BR112015022683B1 (pt) Sistema de processamento e método de realização de uma operação de manipulação de dados
US8977835B2 (en) Reversing processing order in half-pumped SIMD execution units to achieve K cycle issue-to-issue latency
US20140281386A1 (en) Chaining between exposed vector pipelines
JP2013242892A (ja) マイクロプロセッサ内において複数のレジスタユニットからの対応する半語ユニットを結合するための方法及びシステム
CN108369510A (zh) 用于以无序加载的置换的指令和逻辑
US20170046156A1 (en) Table lookup using simd instructions
TWI587137B (zh) 經改良之單一指令多重資料(simd)的k最近鄰居法之實施技術
US20170046160A1 (en) Efficient handling of register files
US9747232B2 (en) Data processing device
WO2014202825A1 (en) Microprocessor apparatus