520 likes | 1.24k Views
Lecture #7. 제 5 장 기억장치 (2). 강의 목차. 5.1 기억장치시스템의 특성들 5.2 기억장치 계층 5.3 반도체 기억장치 5.4 기억장치 모듈의 설계 5.5 캐쉬 기억장치. 캐쉬 기억장치 개요 (1). 사용 목적 CPU 와 주기억장치의 속도 차이로 인한 CPU 대기 시간을 최소화 CPU 와 주기억장치 사이에 설치하는 고속 반도체 기억장치 특징 CPU 에 근접한 위치나 CPU 내부에 위치한다 주기억장치보다 액세스 속도가 높은 칩 사용
E N D
Lecture #7 제5장 기억장치 (2)
강의 목차 • 5.1 기억장치시스템의 특성들 • 5.2 기억장치 계층 • 5.3 반도체 기억장치 • 5.4 기억장치 모듈의 설계 • 5.5 캐쉬 기억장치
캐쉬 기억장치 개요 (1) • 사용 목적 • CPU와 주기억장치의 속도 차이로 인한 CPU 대기 시간을 최소화 • CPU와 주기억장치 사이에 설치하는 고속 반도체 기억장치 • 특징 • CPU에 근접한 위치나 CPU 내부에 위치한다 • 주기억장치보다 액세스 속도가 높은 칩 사용 • 가격 및 제한된 공간 때문에 용량이 적다 Computer Architecture
캐쉬 기억장치 개요 (2) • CPU의 주기억장치 접근 동작-MMU(Memory Management Unit) • CPU가 주소버스에 주소를 전송하여 주기억장치에 접근한다 • CPU는 캐쉬 기억장치 존재를 인지하지 못한다 • 접근하려는 데이터가 캐쉬에 있는지를 검사한다 • 캐쉬에 있으면 바로 CPU로 데이터를 전송하거나 데이터를 수정한다 • 캐쉬에 없으면 주기억장치에 접근한다 • 주기억장치에 접근하여 읽어온 데이터를 캐쉬에 저장한다 • 데이터를 CPU에 전송한다 • 주기억장치로부터 캐쉬로 적재된 데이터는 CPU가 다시 접근할 때에 빠른 속도로 접근이 가능하다 • 캐쉬 기억장치에 있는 수정된 데이터는 주기적으로 주기억장치에 write-back되어 최근에 수정된 상태를 유지한다 Computer Architecture
캐쉬 기억장치 개요 (3) • 캐쉬 성능 평가 • 캐쉬 적중(cache hit) : CPU가 원하는 데이터가 이미 캐쉬에 있는 상태 • 캐쉬 미스(cache miss) : CPU가 원하는 데이터가 캐쉬에 없는 상태 • 적중률(hit ratio) : 캐쉬에 적중되는 정도(H) 캐쉬에 적중되는 횟수 H = --------------------------- 전체 기억장치 액세스 횟수 • 캐쉬의 실패율(miss ratio) = (1 - H) • 평균 기억장치 액세스 시간(Ta) : Ta = H × Tc + (1 - H) × Tm 단, Tc는 캐쉬 액세스 시간, Tm은 주기억장치 액세스 시간 Computer Architecture
캐쉬 기억장치 개요 (4) • 평균 기억장치 액세스 시간 예: [예제 5-1] Tc = 50 ns, Tm = 400 ns인 시스템에서, 캐쉬 적중률이 70%, 80%, 90%, 95% 및 99%일 때의 평균 기억장치 액세스 시간을 각각 구하라 H = 70%의 경우 : Ta = 0.7 x 50 ns + 0.3 x 400 ns = 155 ns H = 80%의 경우 : Ta = 0.8 x 50 ns + 0.2 x 400 ns = 120 ns H = 90%의 경우 : Ta = 0.9 x 50 ns + 0.1 x 400 ns = 85 ns H = 95%의 경우 : Ta = 0.95 x 50 ns + 0.05 x 400 ns = 67.5 ns H = 99%의 경우 : Ta = 0.99 x 50 ns + 0.01 x 400 ns = 53.5 ns • 캐쉬의 적중률이 높아질수록 평균 기억장치 액세스시간은 캐쉬 액세스 시간에 접근 • 캐쉬 적중률은 프로그램과 데이터의 지역성(locality)에 크게 의존 Computer Architecture
캐쉬 기억장치 개요 (5) • 지역성(Locality) • CPU가 주기억장치의 특정 부분(지역)에 위치한 프로그램 코드나 데이터를 빈번히 혹은 집중적으로 접근하는 현상 • 캐쉬 기억장치의 성능에 크게 영향을 미침 • 시간적 지역성(temporal locality) • 최근에 액세스된 프로그램이나 데이터가 가까운 미래에 다시 액세스 될 가능성이 높다 • 반복 문장, 호출빈도가 높은 서브루틴, 공통 변수 등 • 공간적 지역성(spatial locality) • 기억장치 내에 인접하여 저장되어 있는 데이터들이 연속적으로 액세스 될 가능성이 높다 • 표 또는 배열 형식의 데이터 등 • 순차적 지역성(sequential locality) • 분기(branch)가 발생하지 않는 한, 명령어들은 기억장치에 저장된 순서대로 인출되어 실행된다 • 일반적으로 순차 실행과 비순차 실행의 비율은 5:1 정도 Computer Architecture
캐쉬 기억장치 개요 (6) • 캐쉬 기억장치의 사용 목적 • 평균 기억장치 접근 시간의 단축 • 목적 달성을 위해 캐쉬 설계 시에 여러 가지 요인을 고려하여야 함 • 캐쉬 설계의 공통적인 목표 • 캐쉬 적중률의 극대화 – 프로그램 특성으로 한계성을 가짐 • 캐쉬 액세스 시간의 최소화 • 캐쉬 미스에 따른 지연 시간의 최소화 • 주기억장치와 캐쉬간의 데이터 일관성 유지 및 그에 따른 오버헤드의 최소화 Computer Architecture
캐쉬의 크기 • 캐쉬의 크기 • 용량이 커질수록 적중률이 높아지지만, 상대적으로 비용이 증가 • 용량이 커질수록 주소 해독 및 정보 인출을 위한 주변 회로가 더 복잡해지기 때문에 액세스 시간이 다소 더 길어진다 • Chip의 종류 및 Board의 공간에 의한 제약 Computer Architecture
캐쉬인출 방식 (1) • 인출 방식 • 주기억장치에서 캐쉬 기억장치로 정보를 가져오는 방식 • 요구 인출(demand fetch) 방식 • 필요한 정보만 인출해 오는 방법 • 선인출(prefetch) 방식 • 필요한 정보 외에 앞으로 필요할 것으로 예측되는 정보도 미리 인출 • 지역성이 높은 경우에 효과가 높다. Computer Architecture
캐쉬인출 방식 (2) • 주기억장치와 캐쉬의 조직 • 블록(block) • 주기억장치로부터 동시에 인출되는 정보들의 그룹 • 일반적으로 블록의 크기는 2~4 word 정도 • 주기억장치 용량 = 2n단어, 블록 = K 단어 블록의 수 = 2n/K 개 • 슬롯(slot or line) • 캐쉬에서 한 메모리 블록이 저장되는 장소 • 하나의 캐쉬 슬롯은 여러 개의 메모리 블록에 의해 공유 가능 • 태그(tag) • 슬롯에 적재된 블록을 구분해주는 정보 Computer Architecture
캐쉬인출 방식 (3) • 주기억장치와 캐쉬의 조직 (계속) Computer Architecture
사상 방식(Mapping Scheme) • 캐쉬 사상 방식 • 어떤 주기억장치 블록들이 어느 캐쉬 슬롯을 공유할 것인 지를 결정 주기억장치 블록이 로딩되는 캐쉬 슬롯을 결정 • 캐쉬 적중률에 크게 영향을 미치는 요소 • 캐쉬 기억장치의 내부 구조를 결정 • 종 류 • 직접 사상(direct mapping) • 완전-연관 사상(fully-associative mapping) • 세트-연관 사상(set-associative mapping) Computer Architecture
직접 사상 (Direct Mapping) (1) • 주기억장치의 블록들이 지정된 하나의 캐쉬 슬롯으로만 적재 • 주기억장치 주소 해석 • 태그 필드(t 비트) : 태그 번호 • 슬롯 번호(s 비트) : 캐쉬의 m = 2s개의 슬롯들 중의 하나를 지정 • 단어 필드(w 비트) : 각 블록 내 2w개 단어들 중의 하나를 구분 • 주기억장치의 블록 j가 적재될 수 있는 캐쉬 슬롯의 번호 i : i = j mod m 단, j : 주기억장치 블록 번호, m : 캐쉬 슬롯의 전체 수 Computer Architecture
직접 사상 (Direct Mapping) (2) • 캐쉬 슬롯을 공유하는 주기억장치 블록 및 식별 • 각 캐쉬 슬롯은 2t개의 블록들에 의하여 공유 • 같은 슬롯을 공유하는 블록들은 서로 다른 태그를 가짐 • 캐쉬 슬롯에는 태그와 데이터 블록이 저장 캐쉬 적중 여부를 주소의 태그 비트와 슬롯에 저장된 태그 비트를 비교하여 결정 Computer Architecture
직접 사상 캐쉬의 조직 Computer Architecture
직접 사상 캐쉬의 동작 원리 • 캐쉬로 기억장치 주소가 보내지면, 그 중 s-비트의 슬롯번호를 이용하여 캐쉬의 슬롯을 선택 • 선택된 슬롯의 태그 비트들을 읽어서 주소의 태그 비트들과 비교 • 두 태그값이 일치하면 (Cache Hit) 주소의 w 비트들을 이용하여 슬롯내의 단어들 중에서 하나를 인출하여 CPU로 전송 • 태그값이 일치하지 않는다면 (Cache Miss) • 주소를 주기억장치로 보내어 한 블록을 액세스 • 인출된 블록을 지정된 캐쉬 슬롯에 적재하고, 주소의 태그 비트들을 그 슬롯의 태그 필드에 기록 • 만약 그 슬롯에 다른 블록이 이미 적재되어 있다면, 그 내용은 지워지고 새로이 인출된 블록을 적재 Computer Architecture
직접 사상 캐쉬의 동작 예 (1) • 주기억장치 용량 = 128(27) 바이트 • 주기억장치 주소 = 7 비트 (바이트 단위 주소 지정) • 블록 크기 = 4 바이트 주기억장치는 128/4 = 32 개의 블록들로 구성 • 캐쉬 크기 = 32 바이트 • 캐쉬 슬롯 크기 = 4 바이트 (블록 크기) • 전체 캐쉬 슬롯의 수 m = 32/4 = 8 개 기억장치 주소 형식 : Computer Architecture
직접 사상 캐쉬의 동작 예 (2) • 각 기억장치 블록이 공유하게 될 캐쉬 슬롯 번호 i = j mod 8 Computer Architecture
직접 사상 캐쉬의 동작 예 (3) Computer Architecture
직접 사상 캐쉬에서의 적중 검사 예 • 앞의 그림과 같이 메모리 블록이 적재되어 있다고 가정하고 다음과 같은 CPU의 메모리 접급에 대해 캐쉬 적중 여부를 판별 (1) 0101000 (2) 0001100 (3) 1110100 (4) 1011000 <풀이> (1) 캐쉬 미스 2번 슬롯의 데이터 필드 : ‘info’, 태그 : 01 (2) 캐쉬 적중 : 3번 슬롯에 적재되어 있음. (3) 캐쉬 미스 5번 슬롯의 데이터 필드 : ‘tech’, 태그 : 11 (4) 캐쉬 적중 : 6번 슬롯에 적재되어 있음. Computer Architecture
직접 사상 캐쉬의 장단점 [장점] • 하드웨어가 간단하고, 구현 비용이 적게 든다 [단점] • 각 주기억장치 블록이 적재될 수 있는 캐쉬 슬롯이 한 개뿐이기 때문에, 그 슬롯을 공유하는 다른 볼록이 적재되는 경우에는 swap-out 됨 • 현재 실행중인 두 개의 프로그램인 같은 슬롯을 공유하는 경우에 캐쉬 슬롯에 대한 적중률이 떨어져 슬롯 교체가 빈번하게 발생 전체적인 캐쉬 성능이 저하 Computer Architecture
완전-연관 사상 (1) • 완전 연관 사상(Full Associative mapping) • 주기억장치 블록이 캐쉬의 어떤 슬롯으로든 적재 가능 • 직접 사상 방식의 단점을 보완 • 기억장치 주소 해석 • 태그 필드 = 주기억장치 블록 번호 • 직접 사상 캐쉬의 예에 완전-연관 사상 방식을 적용하면, Computer Architecture
완전-연관 사상 (2) • 완전 연관 사상(Full Associative mapping) (계속) • 하나의 블록이 캐쉬에 적재되면 블록 번호(태그) 필드 전체가 슬롯의 태그 영역에 저장 • 캐쉬 적중 여부 검사 방법 • CPU의 메모리 접근에 대해 주기억장치 주소에서 태그 필드를 추출 • 캐쉬의 모든 슬롯들의 태그 영역과 내용을 비교 • 일치하는 슬롯이 있으면 캐쉬 적중(Cache Hit), • 그렇지 않으면 캐쉬 미스(Cache Miss) Computer Architecture
완전-연관 사상 캐쉬의 조직 (1) Computer Architecture
완전-연관 사상 캐쉬의 조직 (2) • 연관 기억장치(Associative Memory) 적용 • 캐쉬 적중을 검사하기 위해 주기억장치 주소 태그를 모든 캐쉬 슬롯의 태그와 비교 • 병렬적인 비교와 기억장치 접근을 위해 연관 기억장치를 사용 • 상대적으로 구현 비용이 높다 • 캐쉬 슬롯 교체(Replacement) 알고리즘 필요 • 주기억장치에서 인출된 데이터 블록을 적재할 캐쉬 슬롯을 결정 • 캐쉬의 빈 슬롯을 검사하여 있으면 비어있는 슬롯에 적재 • 만약 빈 슬롯이 없을 경우, 기존에 채워진 슬롯 중에 하나를 선택하여 새로운 데이터 블록으로 교체 (Replacement) • 교체 슬롯 선택 방법에 따라 캐쉬 성능에 영향 Computer Architecture
완전-연관 사상의 예 Computer Architecture
완전-연관 사상 캐쉬에서의 적중 검사 예 • 앞의 그림과 같이 메모리 블록이 적재되어 있다고 가정하고 다음과 같은 CPU의 메모리 접급에 대해 캐쉬 적중 여부를 판별 (1) 1011000 (2) 0010100 (3) 0000000 (4) 0111100 <풀이> (1) 캐쉬 적중 : 현재 3번 슬롯에 적재되어 있음 (2) 캐쉬 미스 (3) 캐쉬 미스 (4) 캐쉬 적중 : 현재 1번 슬롯에 적재되어 있음 Computer Architecture
완전-연관 사상 캐쉬의 장단점 [장점] • 새로운 블록이 캐쉬로 적재될 때 슬롯의 선택이 매우 자유롭다 • 지역성이 높다면, 적중률이 매우 높아진다 [단점] • 캐쉬 슬롯들의 태그들을 병렬로 검사하기 위하여 매우 복잡하고 비용이 높은 회로가 필요 • 실제 시스템에서는 거의 사용되지 않음 Computer Architecture
세트-연관 사상 (1) • 세트-연관 사상(Set-Associative Mapping) • 직접 사상과 완전-연관 사상의 조합 • 캐쉬 슬롯을 두 개 이상의 슬롯을 갖는 캐쉬 세트(set)로 그룹핑하고주기억장치 블록 그룹이 하나의 캐쉬 세트를 공유하도록 함 • 캐쉬는 v 개의 세트들로 나누어지고, 각 세트들은 k 개의 슬롯들로 구성됨을 가정 캐쉬 슬롯의 수 m과 주기억장치 블록이 적재될 수 있는 캐쉬 세트 번호 i : m = v x k i = j mod v 단, i : 캐쉬 세트의 번호, j : 주기억장치 블록 번호 m : 캐쉬 슬롯의 전체 수 Computer Architecture
세트-연관 사상 (2) • 세트-연관 사상(Set-Associative Mapping)(계속) • 기억장치 주소 해석 • 태그필드와 세트필드를 합한 (t+d)비트가 주기억장치의 2(t+d)블록들 중의 하나를 지정 • 직접 사상 캐쉬의 예에 완전-연관 사상 방식을 적용하면, • 세트 수 = 캐쉬 슬롯 수 (v = m), 세트 내 슬롯의 수 k = 1 직접 사상 • 세트 수 = 1, 세트 내 슬롯의 수 = 캐쉬의 전체 슬롯 수 (k = m) 완전-연관 사상 • 세트 내의 슬롯 수 = 1 < k < m/v k-way 세트 연관 사상 Computer Architecture
세트-연관 사상의 동작 원리 • 기억장치 주소의 세트 비트들을 이용하여 캐쉬 세트들 중의 하나를 선택 • 주소의 태그 필드 내용과 그 세트내의 태그들을 비교 • 일치하는 것이 있으면 (캐쉬 적중) • 그 슬롯내의 한 단어를 w 비트에 의해 선택하여 인출 • 일치하는 것이 없다면 (캐쉬 미스) • 주기억장치를 액세스 • 슬롯들 중의 어느 슬롯에 새로운 블록을 적재할 것인 지를 결정하여 교체 (교체 알고리즘 필요) Computer Architecture
세트-연관 사상 캐쉬의 조직 Computer Architecture
세트-연관 사상의 예 Computer Architecture
세트-연관 사상 캐쉬에서의 적중 검사 예 • 앞의 그림과 같이 메모리 블록이 적재되어 있다고 가정하고 다음과 같은 CPU의 메모리 접급에 대해 캐쉬 적중 여부를 판별 (1) 1011000 (2) 1110100 (3) 1000000 (4) 0001100 <풀이> (1) 캐쉬 적중 : 현재 2번 세트의 두 번째 슬롯에 적재되어 있음 (2) 캐쉬 미스 1번 세트의 두 번째 슬롯에 적재 (3) 캐쉬 미스 0번 세트의 첫 번째 슬롯에 적재 (4) 캐쉬 적중 : 현재 3번 세트의 첫 번째 슬롯에 적재되어 있음 Computer Architecture
세트-연관 사상의 적용 • 2-way 세트 연관 사상 조직인 보편적으로 사용 • 캐쉬 세트 당 두개의 슬롯을 가지는 구조(v = m/k, k = 2) • 직접 사상 보다 캐쉬 적중률이 훨씬 향상 • 4-way 세트 연관 사상의 경우 • 비교적 적은 추가 비용으로 성능을 더욱 향상 • 세트 당 슬롯 수를 4보다 높여도 성능은 크게 향상되지 않음 Computer Architecture
교체(Replacement) 알고리즘 (1) • 세트-연관 사상에서 주기억장치로부터 새로운 블록이 캐쉬로 적재될 때, 만약 세트내 모든 슬롯들이 다른 블록들로 채워져 있다면, 그들 중의 하나를 선택하여 새로운 블록으로 교체 • 교체 알고리즘 : 캐쉬 적중률을 극대화할 수 있도록 교체할 블록을 선택하기 위한 알고리즘 • 최소 최근 사용(Least Recently Used: LRU) 알고리즘: 사용되지 않은 채로 가장 오래 있었던 블록을 교체하는 방식 • FIFO(First-In-First-Out: FIFO) 알고리즘: 캐쉬에 적재된 지 가장 오래된 블록을 교체하는 방식 • 최소 사용 빈도(Least Frequently Used: LFU) 알고리즘: 참조되었던 횟수가 가장 적은 블록을 교체하는 방식 Computer Architecture
교체 알고리즘 (2) • LRU 교체 알고리즘 • 일반적으로 가장 효과적인 알고리즘으로 평가 • 캐쉬 슬롯 별로 use 비트를 가지도록 하고, 세트 내의 임의의 슬롯이 접근되면 해당 슬롯의 use 비트를 1로 설정하고 나머지 슬롯의 use 비트를 0으로 설정 • 교체가 필요한 경우에 use 비트가 0인 슬롯을 교체 Computer Architecture
교체 알고리즘 (3) • LRU 교체 알고리즘을 사용하는 세트-연관 사상 캐쉬로 아래와 같은 블록들이 연속적으로 들어온다고 할 때, 각 슬롯에 적재되는 블록을 표시하고 적중률(H)을 구하라. 단, 각 세트의 슬롯 수는 (a) 2개, 혹은 (b) 3개이다. Computer Architecture
쓰기 정책 (Write Policy) (1) • 캐쉬의 데이터 블록이 변경되었을 때 그 내용을 주기억장치에 갱신하는 시기와 방법의 결정 • 쓰기 정책 • Write-through • Write-back Computer Architecture
쓰기 정책 (Write Policy) (2) • Write-through • 모든 쓰기 동작들이 캐쉬로 뿐만 아니라 주기억장치로도 동시에 행해지는 방식 • 장점 - 캐쉬에 적재된 블록의 내용과 주기억장치에 있는 그 블록의 내용이 항상 같다 • 단점 - 모든 쓰기 동작이 주기억장치 쓰기를 포함하므로, 쓰기 시간이 길어진다 Computer Architecture
쓰기 정책 (Write Policy) (3) • Write-back • 캐쉬에서 데이터가 변경되어도 그 즉시 주기억장치에 갱신하지 않고 교체시에 갱신하는 방식 • 장점 - 기억장치에 대한 쓰기 동작의 횟수가 최소화되고, 쓰기 시간이 짧아진다 • 단점 - 캐쉬의 내용과 주기억장치의 해당 내용이 서로 다르다 블록을 교체할 때는 캐쉬의 상태를 확인하여 갱신하는 동작이 선행되어야 하며, 그를 위하여 각 캐쉬 슬롯이 상태 비트를 가지고 있어야 한다 Computer Architecture
쓰기 정책 (Write Policy) (4) Computer Architecture
다중프로세서시스템에서의 데이터 불일치 (1) • 다중프로세서시스템에서의 데이터 불일치 문제(data inconsistency problem) • 주기억장치에 있는 블록의 내용과 캐쉬 슬롯에 적재된 복사본들 간에 서로 달라지는 문제 Computer Architecture
다중프로세서시스템에서의 데이터 불일치 (2) Computer Architecture
다중 캐쉬(Multiple Cache) (1) • 온-칩 캐쉬(on-chip cache) • 캐쉬 액세스 시간을 단축시키기 위하여 CPU 칩 내에 포함시킨 캐쉬 • 계층적 캐쉬(hierarchical cache) • 온-칩 캐쉬를 1차(L1) 캐쉬로 사용하고, 칩 외부에 더 큰 용량의 2차(L2) 캐쉬를 설치하는 방식 Computer Architecture
다중 캐쉬(Multiple Cache) (2) • 계층적 캐쉬(hierarchical cache) (계속) • L2는 L1의 슈퍼-세트(super-set) L2의 용량이 L1보다 크며, L1의 모든 내용이 L2에도 존재 • 먼저 L1을 검사하고, 만약 원하는 정보가 L1에 없다면 L2를 검사하며, L2에도 없는 경우에만 주기억장치를 액세스 • L1은 속도가 빠르지만, 용량이 작기 때문에 L2 보다 적중률은 더 낮다 • 2-단계 캐쉬 시스템의 평균 기억장치 액세스 시간 : Ta = H1 x TC1 + (H2 - H1) x TC2 + (1 - H2) x Tm • L1과 L2에서 서로 다른 사상 알고리즘 및 교체 알고리즘 적용 가능 Computer Architecture
다중 캐쉬(Multiple Cache) (3) • 분리 캐쉬 (split cache) • 캐쉬를 명령어 캐쉬와 데이터 캐쉬로 분리 • 명령어 인출 유니트와 실행 유니트 간에 캐쉬 액세스 충돌 현상 제거 • 대부분의 고속 프로세서들(Pentium계열, PowerPC 등)에서 사용 Computer Architecture
다중 캐쉬(Multiple Cache) (4) • 분리 캐쉬의 예: PowerPC 620 프로세서 • 캐쉬 용량 : 32 KB, 캐쉬 구조 : 8-way 세트 연관 사상 구조 Computer Architecture
다중 캐쉬(Multiple Cache) (5) • 분리 캐쉬의 예: 인텔 이타늄(Itanium) 프로세서 • 3-계층 캐쉬 구조 • 1st Layer Cache(명령어 캐쉬 L1I& 데이터 캐쉬 L1D) • 16 KB, 4-way 세트 연관 사상 구조(32 byte block size) • Write-through • 2nd Layer Cache • 96 KB unified cache, 6-way 세트 연관 사상 구조(32 byte block size) • Write-back • 3rd Layer Cache • 4MB unified cache, 4-way 세트 연관 사상 구조(64 byte block size) • Write-back • L2는 L1의 super-set, L3는 L2의 super-set • L3 cache에 대해 128bit backside 버스를 사용하여 빠른 속도로 접근 Computer Architecture