¿Cuáles son las similitudes entre hardware y software, y cuáles son las diferencias?

Para similitudes, ambos dependen en gran medida de la lógica, y ambos son deterministas; es decir, a menos que algo esté mal, dadas las mismas entradas, un sistema de hardware o software debería comportarse igual.

Algunos aspectos del diseño de hardware se parecen más al software. El diseño de FPGA, por ejemplo, se realiza con archivos fuente que se parecen mucho a C. Sin embargo, eso no significa que un programador pueda diseñar un FPGA sin saber nada más: para el diseño de FPGA, debe ser mucho más consciente de qué tipos de recursos que acaba de gastar, en forma de compuertas de entrada, compuertas regulares, compuertas de salida, multiplicadores y ciclos de reloj, de lo que utilizaría para la C. normal. ellos.

En cuanto a las diferencias, en el software, nunca tiene que preocuparse por la física. Considere que un nanosegundo tiene aproximadamente 6 pulgadas de largo en cobre. Como ingeniero de software, eso no significa nada para ti, pero como diseñador a nivel de junta, lo significa todo. Significa que la idea de un pulso de reloj en la mitad de su tablero moderadamente grande está desfasada con el pulso de reloj en la otra mitad. ¿Qué hacer si necesito elementos en todo el tablero para sincronizar y, por supuesto, los necesito para sincronizar?

Luego está el costo. ¿Cuál es el costo de arruinar la construcción de su software, digamos agregando un error importante? Bueno, como regla general, todo lo que has perdido es el tiempo que te llevará reconstruirlo. En hardware? Es posible que tenga que volver a formar una tabla (reconstruirla afuera), a costa de semanas y potencialmente decenas de miles de dólares.

Eso se vuelve ridículamente caro cuando se habla de volver a formar ASICS. El NRE (gasto no recuperable) para un ASIC puede ser de millones .

Esa es una razón por la cual los ASIC (IC específicos de la aplicación) están desfavorecidos en gran parte del mundo del hardware, a favor de los FPGA de alta densidad. Con un FPGA, un error generalmente cuesta el mismo tiempo de reconstrucción que el software (aunque los tiempos de compilación son más largos). Eso hace que la prima por unidad que paga por los últimos FPGA valga la pena en muchos casos.

Ningún gerente de ingeniería quiere escuchar que un error común en un ASIC le va a costar unos meses y unos pocos millones de dólares. “Bien”, dice, “usaré el FPGA de $ 300 solo para evitar el riesgo de eso”.

A veces, una vez que se prueba un diseño FPGA, un equipo de diseño puede optar por convertirlo en un ASIC. Depende, en ese momento, del número de unidades que va a vender y de si los ahorros por unidad justifican la NRE.

Una diferencia más es que las herramientas para el diseño de hardware, particularmente el diseño ASIC, son muy caras y requieren toneladas y toneladas de cómputo. Son los tipos que necesitan un clúster Beowulf de 64 nodos para mantener sus compilaciones manejables. ¿Software? Dame una computadora portátil hecha en los últimos 10 años, y tal vez incluso las herramientas gratuitas en Linux serán lo suficientemente buenas; un experto en software puede hacer literalmente su trabajo con un valor de $ 50 en muchos casos.

El hardware es plano, paralelo, estático y programado / diseñado utilizando técnicas de nivel de ensamblaje (RTL). El software es apenas paralelo, principalmente secuencial y dinámico.

En algunos aspectos, no hay mucho en común. Sin embargo, puede ver el software como una “especificación ejecutable” para un algoritmo y debería ser posible hacer que el hardware coincida. El hardware actual es esencialmente un intérprete rápido para los ISA de los años ochenta.

En sus núcleos, el hardware y el software son similares. Las diferencias aparecen cuando llegamos al lado de la física del hardware.

Soy más un tipo de software, que también ha trabajado en varios proyectos de hardware. Al escribir software para la web, por ejemplo, hay algunas garantías que tiene. Por ejemplo, si usa lenguajes convencionales como Java o Python, son bastante confiables. Lo que significa que, para cualquier error, hay muchas posibilidades de que haya sido causado por usted. Con un poco de depuración (y google / stackoverflowing) lo encontrará, eventualmente.

Para mí todavía tiene que haber un proyecto de hardware, que no haya tenido un error de hardware: desde pequeños como un LED que no se enciende en una placa recién abierta, hasta un retroceso importante de un regulador de voltaje defectuoso que quema todo el sistema. Estos problemas también causan problemas extraños en el software. Debido a esto, pueden ser difíciles y costosos de identificar.

Hubo una broma: cada vez que hay un error, los ingenieros de hardware siempre culpan a los chicos de software y viceversa.

More Interesting

¿Cuáles son los defectos de diseño en Swing?

¿Qué aprendiste de la experiencia en ingeniería de software o al desarrollar proyectos de código abierto?

¿Cómo puedo abordar la complejidad de escribir software?

¿Cuáles son los pros y los contras de tener reuniones diarias de scrum en la noche, al final del día?

¿Cómo elegiría entre la arquitectura multiinquilino y el inquilino único al hacer una aplicación SAAS?

¿Cuáles son los costos y los riesgos de contratar a un no desarrollador y capacitarlo para ser desarrollador?

Cómo definir la integración continua

Cómo cambiar mi carrera de TI a software

Soy una estudiante de segundo año de CSE. Francamente, estoy intimidado por la cantidad de información que los chicos de mi universidad tienen sobre computadoras / tecnología. ¿De qué maneras puedo ser un geek informático / tecnológico?

Estoy convencido de que mi desarrollador está aumentando enormemente la cantidad de horas que le llevará completar un trabajo. ¿Cómo controlo esto? Por favor lea mi comentario.

¿Explicar las diferencias entre los estados en el diagrama de gráfico de estado y las actividades en el diagrama de actividad? Muestra las diferencias entre dos usando un diagrama de ejemplo

¿Qué significa exactamente la frase 'un protocolo se construye sobre otro'?

¿Cómo puedo crear un programa que controle un navegador web?

¿Cuál es un ejemplo de un proyecto sin software que usa Agile?

Cómo cambiar mi trabajo de front-end a desarrollador de software