4 votos

¿Cómo diseñar sistema para n bits?

Digamos que quiero diseñar un sistema de n bits, por ejemplo, 256 bits. ¿Puedo generalizar una ALU de 4 bits que creo que conozco a 256 bits? Estos son mis diagramas. introduzca la descripción de la imagen aquí

introduzca la descripción de la imagen aquí

5voto

Alex Andronov Puntos 178

Algunos aspectos de un sistema puede ser el uso de sus datos arbitrarios anchos, aunque hay a menudo las relaciones entre las diferentes partes de un sistema. Por ejemplo, en la mayoría de los casos el número de palabras por la instrucción o instrucciones por palabra variaría con la anchura de datos. Uno probable que no desee volver a utilizar cuatro bits de instrucciones, incluso si uno utiliza un cuatro bits de palabra de datos (creo que el Intel 4004 mayormente se utilizan 8 bits de instrucciones), ni uno desea utilizar 256 bits de instrucciones si uno utiliza una de 256-bit de palabra de datos. Si las instrucciones se recuperarán más de un bus separado de los datos, tales problemas no se aplican de manera tan significativa, al menos una vez el bus de datos es lo suficientemente amplia como para contener una dirección completa.

Como Chris Stratton señaló, llevar la velocidad de propagación puede ser un problema, pero no tiene que ser tan grave como él sugiere, ya que hay algunos trucos que puede aumentar la velocidad de llevar a la propagación en gran medida. Uno de los principales truco es producir lo que se denomina "P" y "G" de las señales. Una "P" de la señal para un bloque significa que el bloque a llevar a la salida se establecerá si llevar a su entrada se establece. Una "G" de la señal significa que el bloque a llevar a la salida será establecer si es o no su entrada se establece. Para una sola etapa, dos de entrada y llevar a la serpiente, la "P" de la señal es la "O" de las entradas de datos, mientras que la "G" de la señal es la "Y" de las entradas de datos. Dos adder bloques de H y L de cualquier tamaño pueden ser combinados en un bloque mayor por tener la "P" de la señal de la mayor bloque (PH y PL), y la "G" de la señal de los grandes bloques ser "GH o (PH y GL)". Incluso una de 256 bits sumador podría generar su P y G de las señales dentro de unos 16 puerta de los retrasos de la entrada de ser válida; si la llevan en el adder es válida por el momento, el llevar a cabo de la serpiente será válida dos puertas retrasos más tarde, y el P y G de las señales puede ser utilizada para calcular la llevan en cada una de las etapas dentro de los 16 puerta de retrasos. Así que incluso un 256-bits, además se puede realizar en aproximadamente 32 puerta de retrasos.

Si incluso eso sería demasiado lento, uno puede ser capaz de beneficiarse de un dispositivo llamado Llevar a Guardar Adder. Básicamente, la idea de Llevar a Guardar Adder es que tarda de tres cifras arbitrarias como entrada y salidas de los dos números cuya suma será igual a la de los tres originales. En realidad es muy simple-sólo tiene que utilizar un sumador completo en cada uno de los bits de la etapa, el uso de los "datos" de salida de cada sumador para formar un número, y el "acarreo" de salida, desplazado a la izquierda un bit, de forma que los otros. Mientras que una convencional adder toma un poco más de tiempo para realizar el cálculo de números más grandes que en los pequeños números, llevar a guardar adder siempre realiza su cálculo en alrededor de dos puerta demoras, sin importar el tamaño del operando. La combinación de tres números en dos no es muy útil por sí mismo, pero utilizando dos llevan-guardar los sumandos uno puede combinar cuatro números en dos. Si se doble-en el tamaño de los registros, uno podría tener cada registro contiene dos números que sumados darían el valor "correcto" del registro. La adición de dos registros supondría la adición de cuatro números a la producción de dos, una operación que se puede realizar en cuatro puerta de la propagación de los tiempos. Tenga en cuenta que este enfoque permitirá extremadamente rápidos cálculos, cuando los registros fueron utilizados para el consecutivo de las adiciones o sustracciones. Si uno quería realizar otras operaciones (por ejemplo, el uso de los registros de la matriz de suscripción, o realizar booleano enmascaramiento de las operaciones en ellos) se necesita para resolver los valores numéricos reales de los registros de la primera.

3voto

Andrew Walker Puntos 9038

De verdad que no.

Puede que para algunos efectos de configurar una matriz de 4 bits de computación unidades de actuar sobre una de 256 bits de la palabra, pero muchas de las operaciones de la interdependencia entre las partes, por ejemplo la de llevar en la suma y la resta. Dentro de un escenario, en especial de look-ahead llevar generación se utiliza para asegurarse de que los bits más significativos de conseguir llevar a su entrada en el tiempo para producir su salida al mismo tiempo el menos significativo de los tbis.

Pero usted no será capaz de conseguir que entre las etapas, especialmente entre una matriz de 64 tales etapas. En términos simples, cada etapa retrasar la llevan por un reloj período, por lo que el cálculo de su más alto fin de la etapa podría comenzar a sólo 63 relojes después de la computación de la orden más baja de uno, cuando es necesario realizar la entrada por fin esté disponible.

Es posible construir un sistema que compensa esto, mediante el uso de registros para retrasar el mayor orden insumos necesarios en ciclos de reloj hasta que el llevar los insumos disponibles, y otros registros para retrasar el orden inferior de las salidas hasta que el correspondiente alto orden de salidas disponibles. Esto es llamado canalización - usted puede tener un sistema que requiere de 64 relojes para producir una respuesta (latencia). Pero puede tener una respuesta a un problema distinto en progreso en cada etapa de la canalización, por lo que una respuesta que se produce en cada ciclo de reloj (rendimiento).

Esto se hace comúnmente en el más razonable de los tramos en procesadores de propósito general, pero hay que pagar un alto precio. ¿Qué pasa si una posterior instrucción se basa en el resultado de un cálculo que es lo suficientemente reciente que todavía se filtran a través de la tubería cuando el dependiente de la computación entra en la tubería? Real de los procesadores extra "bypass caminos", agregó para permitir la alimentación de nuevo recientemente anteriores resultados más rápido de lo que se consigue fuera de la parte inferior de la tubería, y de nuevo en la parte superior. Esto ayuda a evitar la canalización de los puestos, pero sólo hasta cierto grado.

Hay otro problema: ¿qué sucede con una instrucción de bifurcación condicional? Se puede mantener el llenado de la tubería con potencialmente necesarios cálculos suponiendo que la rama se toma? Suponiendo que no se toma? Tienen una especie de procesador de doble núcleo de la trata de ambas posibilidades? Si intenta tanto, ¿qué pasa si usted golpea una segunda rama, se va a tratar ambas posibilidades para que?

En resumen, usted está preguntando acerca de lo que es para la mayoría de los efectos de un injustificado ejemplo extremo de una técnica que no acostumbrarnos a más razonable escalas, sujeto a algunas bastante graves costos.

Y hay una clase importante de excepción, donde las tuberías de este largo no sería inconcebible. Que es la computación en los motores que hacer la misma cosa una gran cantidad de datos en un altamente repetible manera: chips DSP, algunos tipos de construcciones en FPGAs y ASICs, y muy posiblemente Gpu así. Si el flujo del programa es un circuito simple, usted necesita para funcionar en una gran cantidad de datos, y está bien para que los resultados se retrasó por muchos relojes, entonces bastante tuberías largas, puede ser un bastante razonable.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X