A memória de aceso aleatório síncrono e dinâmico (do inglês synchronous dynamic random-access memory, conhecido pela abreviatura SDRAM) é toda memória de acesso aleatório (DRAM) que sincroniza automaticamente com a temporização de trabalho do processador (sincronização das ações nos circuitos digitais),[1] planejada na década de 1970.[2] A operação de sua interface de pino externa é coordenada por um sinal de relógio fornecido externamente e, a interface síncrona onde as entradas de controle são reconhecidas após a borda da entrada de clock. A memória síncrona foi desenvolvida devido à velocidade crescente dos outros componentes do computador.[1]
Os circuitos integrados DRAM (ICs) produzido entre o início dos anos 1970 e o início dos anos 1990 usavam uma interface assíncrona, na qual os sinais de controle de entrada têm um efeito direto nas funções internas atrasadas apenas pelo disparo em seus caminhos de semicondutores. O SDRAM tem uma interface síncrona, por meio da qual as mudanças nas entradas de controle são reconhecidas após uma borda ascendente de sua entrada de clock. Em famílias SDRAM padronizadas por JEDEC, o sinal do relógio controla a etapa de uma máquina de estado finito interna que responde aos comandos de entrada. Esses comandos podem ser canalizados para melhorar o desempenho, com as operações iniciadas anteriormente sendo concluídas enquanto novos comandos são recebidos. A memória é dividida em várias seções de mesmo tamanho, mas independente, chamadas bancos, permitindo que o dispositivo opere em um comando de acesso à memória em cada banco simultaneamente e acelere o acesso de maneira intercalada. Isso permite que as SDRAMs alcancem maior simultaneidade e taxas de transferência de dados mais altas do que as DRAMs assíncronas.
Pipelining significa que o chip pode aceitar um novo comando antes de concluir o processamento do anterior. Para uma gravação em pipeline, o comando de gravação pode ser seguido imediatamente por outro comando sem esperar que os dados sejam gravados na matriz de memória. Para uma leitura em pipeline, os dados solicitados aparecem um número fixo de ciclos de clock (latência) após o comando de leitura, durante o qual comandos adicionais podem ser enviados.