레지스터가 또 다른 레지스터에 데이터를 쓰거나 저장된 데이터를 읽는 동작은 직렬 전송과 병렬 전송으로 구분된다.
직렬 전송 방식
이 방식은 1비트씩 이웃한 플립플롭 회로로 이동하고 가장 끝의 플립플롭은 또 다른 레지스터의 플립플롭으로 전송되는 방식이다. 이러한 동작을 수행하는 레지스터를 이동 레지스터(shift register)라고 한다. [ 그림 6-13 ]은 레지스터 B에서 레지스터 A로 데이터가 직렬 전송되는 개념을 나타낸 것이다.
[ 그림 6 - 13 ]
전송하는 레지스터의 내용을 보존하려면 자신의 직렬 출력을 다시 직렬로 입력하여 모든 비트가 원래의 위치에 있도록 해야 한다. [ 그림 6-14 ]는 레지스터 B에서 레지스터 A로 직렬 전송하기 위한 회로를 나타낸 것이다. 레지스터 B의 내용은 이동 지시에 의해 오른쪽으로 이동되고, 여기에서 출력되는 비트는 이동 지시에 의해 레지스터 A에 직렬로 입력된다.
[ 그림 6-14 ]
[ 그림 6-15 ] 는 레지스터 A의 내용을 잃어버리지 않게 하려고 게이트를 추가한 회로다. 이동 신호는 레지스터 A의 내용만 이동시키고 레지스터 B에는 영향을 주지 않는 단자다. 전송 신호는 레지스터 A를 회전시키고 레지스터 B만 이동시키는 단자다. 회전 신호는 레지스터 A의 내용이 직렬로 출력된 후 다시 직렬로 입력되어 회전되지만 레지스터 B에는 아무런 영향을 미치지 않도록 설계된 단자다.
[ 그림 6-15 ]
병렬 전송 방식
레지스터에 기억된 전체 내용을 하나의 제어신호로 다른 레지스터에 동시에 전송하는 방식이다. [ 그림 6-16 ]은 병렬 전송(parallel transfer)의 개념을 나타낸 것이다.
[ 그림 6-16 ]
[ 그림 6-17 ] 은 4비트 레지스터가 병렬 전송을 수행할 수 있도록 논리회로를 추가한 것을 나타낸다. 여기서 로드(load)가 1일 경우 4비트 입력 I0 ~ I3은 4개의 플립플롭에 각각 저장된다. 로그다 0인 경우 I0~ I3의 입력은 차단되고, 플립플롭의 결과가 다시 플립플롭으로 입력된다.
[ 그림 6-17 ]