\section{Vantagens e Desvantagens do VLIW}

%[ VANTAGENS E DESVANTAGENS ]
%  ~~~~~~~~~ ~ ~~~~~~~~~~~~

\subsection{Vantagens}

\begin{itemize}


\item{
  Por ter acesso ao código fonte, o compilador consegue analisar
  janelas maiores de código, aumentando
  o nível de otimização. Para um efeito semelhante em
  \textit{hardware}, muita complexidade teria que ser adicionada,
  aumentando a área do \textit{chip} e conseqüentemente encarecendo-o.
}

\item{
  Como o compilador tem acesso ao código fonte ele tem informações
  que são perdidas após a compilação e que seriam úteis para uma
  melhor otimização.
}

\item{
  Com um número suficiente de registradores é possível imitar o
  comportamento de reordenação de \textit{buffer}, como nos
  processadores superescalares. Com isso o processador VLIW pode
  executar instruções  antes de seu tempo e caso seja necessário,
  descartar tais valores (no caso de um \textit{branch}, por
  exemplo). Isto é feito utilizando-se os registradores temporários
  para operações executadas antes da hora.
}

\item{
  Os problemas de otimização são resolvidos somente uma vez: em tempo
  de compilação.
 }

%\item{
%  Consegue diminuir o tamanho do \textit{clock}.
%}

\item{
  Como a complexidade é movida para o compilador, uma quantidade 
  menor de \textit{hardware} é necessária, barateando custos,
  diminuindo gastos com energia e dissipação de calor.
}

\end{itemize}


\subsection{Desvantagens}

\begin{itemize}

\item{
  Por ser difícil manter sempre todos os espaços para operações
  ocupados em uma instrução, sendo assim, muitos recursos podem ser
  perdidos: banda do barramento, espaço do cache de instruções e
  espaço da memória de instruções.
}

\item{
  Código fonte do programa é necessário.
}


\item{
  Não tem a vantagem de rodar o mesmo código que outras plataformas,
  como, por exemplo, os superescalares que rodam código dos escalares;
}
  
\item{
  A dependência da plataforma é muito evidente, sendo difícil haver
  compatibilidade. O compilador precisa, muitas vezes, ser dedicado
  para tal plataforma afim de conseguir uma alta otimização, isto é,
  compiladores que tentam compilar para várias plataformas, ie o
  GCC\footnote{GCC: \textit{CNU Compiler Collection}. \url{http://www.gnu.org/software/gcc}},
  dificilmente serão um bom compilador VLIW.
}

\item{
  Impraticável a programação direta em \textit{assembly};
}

\end{itemize}

