우리는 앞서 반도체 산업의 각 분야에 대해 살펴보았고, 그중 반도체의 논리적 설계(Logic Design)에 대해서도 간략하게 알아보았다. 이번 편에서는 이 Logic Design에 대해서 조금 더 논해보려고 한다.
0) 서론
연산. 규칙만 알면 유치원생도 할 수 있는 행위이지만, 쉬운 난이도에 비해 실수가 적지 않다. 3+4가 7 임을 너무나 잘 알면서도 어처구니없게도 8이라고 잘못 답을 내리기도 경험은 아마 이 글을 읽는 거의 대부분의 사람들이 겪어봤을 법한 실수일 것이다. 또한 연산이라는 개념은 하루에도 수십 수백 번씩 사용하게 된다. 음식점을 가서 음식의 가격을 계산할 때, 운동을 하며 남은 시간을 계산할 때, 오늘 아침 들어온 물건의 물량 개수를 파악할 때, 회사의 업무를 볼 때 등등 반복되는 행위이다.
이런 연산의 특징은 단순히 오늘날의 문제는 아니었다. 고대사회부터 연산이 반복적으로 행해지는 것에 비해 인간이 잦은 실수를 할 수 있고 계산의 속도도 그 난이도에 비해 아주 빠르지 않음을 알았기에 여러 가지 형태의 계산기가 발달해 왔다. 그래서 주판을 개발하고 또 많은 과학자들이 기계식 계산기를 개발해 왔다.
파스칼의 기계식 계산기(출처: 위키백과)
그러는 한편, 우리는 전기에 대해 인식을 하고 연구하기를 수백 년을 지속해 왔다. 아주 간단한 정전기 현상부터 시작해, 전기와 관련된 여러 가지 자연의 법칙들을 발견하고 이를 응용해 배터리/모터와 같은 발명품을 만들고 이와 관련된 여러 가지 공학들을 정의하고 정립해 왔다.
계산기나 전자공학뿐만 아니다. 수천 년 전부터 수학에 대해서 연구하며 우리는 진법이라는 개념을 발견하고, 우리가 사용하는 숫자체계가 10진법이라는 것부터 0과 1 단 두 개의 숫자로 우리가 알고 있는 모든 숫자들을 표현할 수 있는 2진법까지도 발견하게 됐다.
그러나 다시 계산기로 돌아가서, 아무리 계산기가 발전해도 한계가 있었다. 여전히 사람의 입력이 있어야 한다는 것이다. 엔진을 이용한 계산기도 있었다지만, 연산을 하는 것에 비해 너무 많은 자원이 소모되니 이를 개량해 나가는 것에는 의미를 찾기 어려웠다.
그러던 무렵 1800년대 후반, 진공관이 개발된다. 진공관의 개발이 역사적으로 평가되는 이유는, 숫자를 전기적으로 표현하여 우리가 데이터를 저장한다는 개념을 만들게 된 것에 있다. 이를 기점으로 0 또는 1을 전기적으로 저장할 수 있게 됐다.
이제 저장을 할 수 있게 됐으니 그럼 어떤 규칙으로 0,1의 상태를 바꿀 것인지 고민해 볼 차례. 0 또는 1의 숫자 두 쌍이 있을 때, 총 4가지 경우가 있다. 0-0,0-1,1-0,1-1. 그럼 이때 이 한 쌍의 숫자를 다시 0 또는 1 중 어디에 배치하느냐에 관한 규칙을 정하기 시작했고, 이를 '논리회로'라고 한다.
논리회로 상징 기호, 대수적 표현 및 진리표 (출처:한국물리학회)
1) CISC vs RISC
컴퓨터가 탄생하면서 많은 학자들은 컴퓨터를 어떤 구조(Architecture, 아키텍처)로 만들 것인가에 대해서 고민했다. 0과 1을 이용하는 이진법을 어떻게 하면 전기적으로 구현해 낼지도 알아냈고 그런 이진법을 이용해서 어떻게 자동화된 연산을 할 수 있을지에 대한 기본적인 답은 어느 정도 도출해 냈지만, 그렇다면 이런 컴퓨터의 논리적인 구조를 어떻게 가져가야 하는지에 대한 고민을 하기 시작했다. 이때 구조라 함은 '어떤 명령어 세트(Instruction Set)를 만들 것인가?'에 관한 것으로, 쉽게 풀어보자면 '덧셈 뺄셈 명령어를 넣을까? 아니면 곱셈 나눗셈까지 넣을까? 저장은 1개씩 저장하는 걸 만들까? 아님 한 번에 여러 개를 저장할 수 있게 할까?' 등 어떤 명령어를 구성할 것인지에 관한 것이라고 이해하면 보다 와닿게 이해할 수 있을 것이다. 그래서 이런 명령어 세트를 어떻게 구성하느냐가 곧 컴퓨터의 구조인 셈이다.이때 사용되는 명령어들이 통상 '어셈블리어'라는 이름으로 불리는 컴퓨터 언어이다.
그런데 초기 컴퓨터 산업에서는 구현할 수 있는 컴퓨터의 성능이 매우 제한적이었다. 지금이야 단 몇 만 원으로도 수 십 기가바이트의 메모리를 만들고 구매할 수 있는 세상이지만, 당시에는 몇 메가바이트를 만들기에도 비용이 상당했다. 그렇다 보니 꼭 필요한 명령어에 최대한 많은 기능을 수행할 수 있도록 다양한 기능들을 넣어야만 했다.
예를 들어, 어떤 저장된 데이터를 불러온다고 생각해 보자. 저장된 데이터를 불러온다는 것은 말 뜻 그대로 데이터를 불러오기만 해도 되지만, 조금 더 생각해 보면 데이터를 불러온다는 것은 '불러온 데이터를 이용해서 또 다른 연산을 하고자 한다'라고 유추할 수 있다. 그래서 기왕 데이터를 불러온다는 기능을 만들 거면, 그 안에 '불러온 데이터를 이용해 바로 또 다른 연산을 할 수 있도록 한다.'라고 만드는 게 어쩌면 더 효율적일 수 있다.
실제로 CISC의 하나인 x86아키텍처에서 사용하는 INC라는 명령어를 살펴볼 텐데, 그전에 잠시 메모리와 레지스터에 대해 알아보자.
컴퓨터는 어떤 값을 저장할 때 두 가지 저장소가 있다. 하나는 창고형인 메모리가 있고 다른 하나는 레지스터라는 작업대가 있다. 그래서 보통 작업을 할 때, 메모리 창고에서 데이터를 레지스터 작업대 위에 올려놓고 연산을 수행한 뒤 다시 메모리 창고에 가져다 놓은 것이 보통이다. 예를 들어, 두 숫자를 더할 때도 일단 메모리 창고에 있는 숫자 박스 두 개를 가져와 레지스터 작업대 위에 올려놓는다. 그 후 두 숫자를 더한 결과를 다른 레지스터 작업대 위에 올려놓고, 이를 다시 메모리창고로 옮기는 형태인 것이다.
작지만 빠른 성능의 레지스터와 크지만 느린 메모리의 개념도
자, 그럼 다시 INC 명령어로 돌아가보자. 이 명령어는 메모리 창고에 있는 어떤 숫자를 1 증가시키는 명령어이다. 앞선 설명대로라면, 메모리 창고에 있는 그 숫자를 레지스터 작업대에 먼저 가져오고 레지스터에서 1을 더한 후 그 결과를 다시 메모리 창고에 가져다주기 위해 다른 레지스터 작업대에 올려다 놓는다. 그렇게 올려진 결과물을 메모리 창고에 가져다 놓는다. 그런데 INC는 이 과정을 모두 생략해 버리고 작업자가 메모리 창고로 바로 들어가 숫자 1을 올려놓는다. 굳이 레지스터에 옮겨놓고 다시 가져다 놓지를 않는 것이다.
이와 같이 컴퓨터 구조에 대한 연구 초기에 고안된 개념이 바로 CISC(Complex Instruction Set Computing)이었다. 말 그대로 명령어가 복잡한 기능을 가지고 있는 형태의 아키텍처였다. 하나의 명령어가 실질적으로는 여러 개의 행위를 내포하는 경우가 많다. 마치 INC 명령어처럼 메모리를 불러오고 연산하고 가져다 놓고 할 필요가 없이 메모리에서 바로 처리해 버리는 것처럼 말이다.
그러나 그렇게 동작하기 위해서는 구현되어야 할 논리 회로 설계가 매우 복잡했다.
그리고 시간이 흐름에 따라, CISC 구조는 복잡하게 설계된 명령어로 인해 몇 가지 문제점이 제기된다.
첫째, 성능을 위해서 만들어진 구조가 오히려 성능을 저하시킨다. 설계 자체가 복잡하게 되니, 하나의 명령어에 따른 수행 내용이 복잡해지니 실행시간이 길어지면서 성능이 저하된다. 그리고 자연히 길어진 실행시간으로 인해 동작시간을 예측하기가 어려워졌다.
둘째, 전력 소모가 증가한다. 당연히 회로가 복잡해진다는 것은 내부적으로 구성 요소들이 많다는 것이다. 반도체는 트랜지스터(Transistor)라고 불리는 스위치가 수 천 개로 구성되어 있는 일종의 스위치 조합이다. (물론 근래에 나오는 반도체는 수십 억 개의 트랜지스터를 포함하고 있다.) 트랜지스터에 대해서는 추후에 조금 더 얘기하기로 하고, 어쨌든 회로가 복잡해지면서 스위치가 많아지게 되면 이에 소모되는 전력 소모가 증가할 수밖에 없다.
셋째, 갈수록 복잡해지는 난이도. 성능을 보완하고 개선하기 위해서 설계가 지속적으로 연구/개발되어 수정되어야 하지만 기본 콘셉트 자체가 복잡하니 가면 갈수록 복잡해지는 것이다.
비유하자면 CISC는 코스 요리를 전문으로 하는 고급 레스토랑이다. 고급 레스토랑에서는 한 번에 많은 음식을 즐길 수 있다는 큰 장점(복잡한 명령어 처리 가능)이 있지만, 대부분의 메뉴 하나 자체가 코스 요리다 보니, 시간도 오래 걸리고 만드는데 비용(전력)도 많이 들고 메뉴(아키텍처)를 개선시키기 위해서 고민해야 될 부분도 많을 것이다.
이런 문제들로 인해 새로운 구조 자체에 대한 고민을 하게 된다. 그래서 근본적으로 명령어를 복잡하게 만들지 말고 간단하게 만드는 구조를 고안하게 된다. 고급 레스토랑의 코스 요리가 문제라면, 차라리 작은 메뉴로만 구성된 분식집을 만드는 것도 답이 될 수 있다. 조리 과정이 복잡하지 않고 단품으로 나가는 메뉴이다 보니 회전율도 좋고 대중적으로 즐기는 식당이니 고급 레스토랑에 비해 매출 예상하기도 훨씬 좋을 것이다.
이렇듯 간단화된 명령어로 구성된 구조를 RISC(Reduced Instruction Set Computing)이다. 명령어가 간단해지면서 각 명령어의 실행속도가 빨라지게 되고, 명령어 처리에 필요한 트랜지스터의 개수가 감소하면서 전력소모가 줄어들게 된다. 이론적으로는 매우 좋아 보이지만... 과연 RISC라고 좋기만 한 것일까?
2) 그리고 x86 vs ARM
앞서 CISC의 단점과 그에 상대되는 RISC구조의 장점을 얘기했는데, RISC라고 장점만 있는 것은 아니다. 명령어를 간단하게 만들게 되니, 이 명령어를 이용해 프로그램을 만들 때 사용해야 할 명령어가 많아진다. 즉, RISC구조라고 해서 하드웨어의 복잡성이 소멸된 것이 아니라 소프트웨어로 옮겨간 셈이다. 소프트웨어가 복잡해졌다는 말은 곧 써야 할 코드의 양이 많아졌다는 것이다.
우리가 앞서 x86의 명령어 중 INC라는 특정 메모리 창고의 값을 1 올리는 명령어를 살펴보았다. 이를 소프트웨어 코드로 표현하면 단 한 줄에 그친다.
INC [메모리 창고 내 숫자 위치]
그런데 이것을 RISC 아키텍처의 일종인 ARM에서 수행하려면 다음과 같이 코드를 작성해야 한다.
(이때 LDR은 메모리 창고에서 레지스터 작업대로 옮기는 명령어이고, STR은 반대로 레지스터 작업대에서 메모리 창고로 옮기는 명령어이다.)
LDR [레지스터 1] [메모리 창고 내 숫자 위치]
(창고에 있는 숫자 가져와라)
ADD [레지스터 1] [레지스터 1] 1
(숫자 1을 더해라)
STR [레지스터 1] [메모리 창고 내 숫자 위치]
(결과를 메모리 창고에 가져다 놔라)
보시다시피 코드의 양이 세 배가 되었다.
이처럼 RISC에서는 프로그램을 저장해야 할 데이터의 크기가 커지기 때문에 메모리를 더 많이 잡아먹을 수밖에 없다.
그런데 컴퓨터가 개발되던 초기에는 메모리의 제약이 지금보다 상당히 컸었다. 어떻게 하면 1비트라도 줄여보기 위한 노력들이 요구될 정도였다.
예를 들어, 비트마스크가 그러한 경우다. 기본적으로 소프트웨어에서 어떤 변수를 만들어 저장할 때, 가장 기본이 되는 단위는 1바이트(8비트, 즉 2의 8 제곱인 256개의 경우의 수[0~255]를 표현 가능한 단위. 1비트는 0 또는 1 단 두 개로 구분되는 단위. 그래서 8비트는 2를 8번 곱한 횟수만큼 구분 가능한 경우의 수가 존재한다.)가 사용된다.
메모리를 가져올 땐 8칸씩 사용해야 한다.
만약 어떤 전구의 불이 들어왔는지를 저장해두고자 할 때도 최소한 1바이트를 사용해야 한다. 그럼 전구는 켜져 있을 때와 꺼져있을 때 두 가지 경우 밖에 존재하지 않으므로 256개의 경우의 수를 표현할 수 있는 1바이트를 이용해 겨우 2개의 경우의 수를 표현하는데 써야 하니 나머지 254개의 경우의 수는 쓸모없는 셈이 된다.그리고 전구가 다수가 된 상황이라면 쓸모없이 버려지는 경우의 수는 254의 배수가 될 것이다. 전구 8개의 상태를 저장하기 위해 각 전구마다 1바이트를 할당한다면, 무려 2032개의 남는 경우의 수를 쓰레기통에 처박은 셈이다.
1줄에 1칸밖에 사용하지 못하므로 7칸 낭비
프로그래머들은 이를 심각한 낭비라고 생각했고 전구 1개 만을 위해 1바이트를 쓰지 말고 8개의 전구 상태를 전부 저장하고자 생각했다. 첫 번째 전구가 켜지면 1, 두 번째 전구가 켜지면 2, 세 번째 전구가 켜지면 4,...,8번째 전구가 켜지면 128에 해당한다고 가정해 보자. 그럼 8개 전구가 모두 켜져도, 이를 모두 더해255가 된다. 전구가 모두 꺼지는 0부터 전구가 모두 켜지는 255까지 256개의 경우의 수를 낭비 없이 1바이트에 저장할 수 있게 된다.
메모리 1줄을 전부 다 쓰자.
7줄의 메모리는 이제 온전히 쓸 수 있게 된다.
이처럼 숫자 자체를 저장하는 것이 아니라, 숫자를 구성하는 각 비트를 하나의 상태에 할당하는 것을 비트마스크라고 하는데 이런 아이디어 역시 결국 메모리 사용량을 최소화할 수 있게 위함이다.
이러한 예는 7,80년대에 연구된 많은 논문에서도 엿볼 수 있다. 어떤 수식을 컴퓨터 프로그램으로 옮길 때, 수식의 원문을 그대로 쓰지 않고 수식을 먼저 계산해 보고 컴퓨터가 받아들이기에 가장 적은 메모리를 쓸 수 있는 형태로 수식을 변형해서 사용하는 경우가 적지 않았다.
이렇듯 메모리의 제약이 큰 이유로 프로그램의 크기를 키울 수 없던 당시의 기술적 제약으로 인해 RISC구조보다는 CISC구조가 더 많이 연구되고 개발될 수밖에 없었다.
그리고 이런 당시의 개발흐름으로 인해, 개인용 컴퓨터 시장을 공략하려는 인텔은 자연스레 CISC구조로 시작할 수밖에 없었다. 그래서 1970년대 후반부터 인텔에서 개발했던 마이크로프로세서는 CISC구조를 채택한 16비트 프로세서 8086 개발하게 된다. 이후 80286,80386,80486 등 시리즈를 내놓으며 이들이 CISC구조로 만든 아키텍처의 이름을 x86 부르며 그 명칭이 자리 잡게 된다.
그러다 메모리 반도체도 어느 정도 시장성을 갖추기 시작하면서 RISC구조가 다시금 주목받기 시작한다.
메모리도 어느 정도 전보다는 물리적으로는 소형화하면서 데이터를 저장하는 용량은 더 크게 만들 수 있게 되었다. 그리고 메모리의 용량이 커진 상태로 소형화할 수 있게 되니 시장에서는 이를 이용해 휴대용 기기를 만들고 싶은 욕구가 자연스레 생기게 된다. 그러나 기존의 CISC로는 전력 소모가 적어야 하는 휴대용 기기에 적합한 반도체를 설계하기 어려웠다. 그러니 자연스레 RISC 구조를 필요로 하게 되게 된다.
현재 안드로이드 스마트폰이나, 애플의 아이폰은 모두 ARM이라는 회사의 반도체 논리설계를 기준으로 만들어진다. ARM은 Advanced RISC Machines의 약자로, 이름에서 볼 수 있듯 개선된 RISC 아키텍처의 반도체 설계를 만드는 회사이다. ARM은 2000년대에 들어서며 아이폰을 시작으로 스마트폰에 필요한 반도체 설계를 팔게 되면서 폭발적인 성장을 하게 되는데, 이와 관련된 이야기는 다음 절에서 풀도록 하겠다.
ARM은 그들이 만든 Logic Design을 팔거나 사용권 자체를 판다. 다시 말해, ARM의 라이선스를 구매하면 ARM이 설계한 Logic Design을 그대로 사용해도 되고(프로세서 라이선스라 칭함.)ARM의 구조만을 이용해 자체적으로 그 구조에 맞는 설계를 제작하여반도체를 만들 수도 있다.(아키텍처라이선스라 칭함.) 반도체를 설계하여 생산을 파운드리에 맡기고 생산된 반도체를 팔려는 Fabless 회사들의 경우, Logic Design부터 Physical Design까지 모두 감당하기가 쉽지 않다. 기존부터 두 설계 업무를 모두 해오던 회사가 아니라면 진입장벽이 상당하다. 이 때문에 Fabless 회사들은 주로 ARM이나 인텔이 만든 Logic Design을 이용해서 그대로 사용하거나 일부만 수정하고 Physical Design만 수행하여 반도체 설계를완성하게 된다.물론 AMD처럼 Logic Design의 뼈대만 인텔에서 가져오고 자신들만의 방식으로 살과 근육을 붙여 아키텍처를 만드는 경우도 있다.
애플의 경우, 이제는 아키텍처 라이선스를 이용해 자신들이 직접 Logic design까지 도맡아 Logic 설계를 하고 있다. (물론 아키텍처 라이선스는 ARM의 명령어 체계를 그대로 사용할 수 있지만, 커스터마이징을 하기 위해 새로운 명령어 추가는 불가능하다.)
CISC와는 다르게 RISC의 경우, 시장이 단기간에 아주 폭발적으로 성장하던 중이므로 더더욱이 이런 설계의 분업화가 고착화될 수밖에 없었다. 만약 자체적으로 고유의 RISC 아키텍처를 만드는 것부터 시작했었다면, 스마트폰의 시대가 시작이 늦어졌거나 다른 누군가가 ARM의 라이선스를 이용해 Logic Design은 빠르게 해결하고 스마트폰을 만들어 성장했을지도 모른다.
하지만 지금에 와서야 어떤 회사가 독자적으로 새로운 RISC 아키텍처를 만든다고 해도, 이미 시장에 ARM의 설계에 맞춰서 나와있는 많은 소프트웨어와 호환성이 맞지 않기 때문에 그런 아키텍처의 칩을 만들어도 시장성이 전혀 없으니 만드나 마나 한 셈이 될 것이므로 새롭게 RISC 아키텍처를 만들기는 쉽지 않은 상황이다.
3) ARM과 애플의 인연
ARM의 시작은 1980년대 Acorn RISC Machines라는 이름으로 첫출발을 했다. 초기에는 RISC 구조를 이용하여 자체적인 CPU를 만들려고 했고 실제로 '아르키메데스'라는 제품을 만들어 RISC 제품의 가능성을 확인할 수 있었다. 이에 시장에서도 제법 좋은 평가를 받았지만, 결론적으로는 시장 점유율을 확보하지 못하여 이를 더 이어 나갈 수는 없었다. 아무리 좋은 제품도 사람들이 무슨 이유에서 안 사주면 의미를 상실할 수밖에 없다.
그러나 RISC 가능성을 증명은 해서였는지 애플은 ARM의 아키텍처를 이용해서 새로운 전자제품(PDA)을 만들고자 한다. 이를 위해 VLSI Technology라는 회사와 애플, ARM 셋이 합작하여 Advanced RISC Machines, 지금의 ARM을 설립하게 된다. 그렇게 합작한 회사를 바탕으로 애플은 최초의 PDA(Newton Message Pad)를 만드는 것에 성공은 했지만, 시장에서 성공을 거두진 못했다. 비싼 가격, 여전히 존재하는 기술적 한계, 경쟁사들의 진입 등 여러 요인으로 인해 Newton Message Pad는 실패로 끝나고 말았다.
그렇다고 이것이 RISC 자체의 가능성이 좌절됐다는 것을 의미하진 않았다. 애플은 이후에도 여러 가지 제품군에 ARM 아키텍처를 사용하며 도전해 왔고, 2001년 아이팟이 성공하기 시작하면서 그 시리즈를 이어가게 되었고 이를 바탕으로 아이폰으로 시작되는 스마트폰의 시대를 열 발판을 마련하게 된다.
4) 새로운 파도 RISC-V?
그렇게 스마트폰 시대가 열리면서 x86진영의 노트북을 제외하면, 현재 대부분의 모든 모바일 기기는 ARM의 라이선스를 기반으로 만들어지고 있다. 그러나 과연 ARM이 앞으로도 모바일 시장에서 지금과 같은 독점적 지위를 유지할 수 있을지는 미지수다.
이제는 ARM 아키텍처에서도 x86만큼은 아니어도충분한 고성능을 내게 되는 동시에, 인공지능과 관련된 하드웨어 및 소프트웨어 기술의 발달을 통해 모바일 기기에서도 인공지능 연산을 필요로 하게 되었다.
이러한 배경으로 스마트폰에 들어가는 SoC(System on Chip, 비디오/연산/인터넷 등 각자의 기능을 가진 여러 가지 프로세서를 하나의 칩에 결합하여 만든 반도체 칩)에 AI기능을 위한 NPU(Neural Network Process Unit)까지 덧붙이게 된다.
위 기사 내용을 요약하여 쉽게 풀어보자면, 한마디로 ARM이 '너네 반도체 만들 때, 우리 설계로 만든다면서 왜 거기에 다른 회사 설계를 갖다 붙이려 하니? 할 거면 우리가 만든 걸 써야지'라고 선언한 것이다.
법적으로 누가 옳고 그른지는 법원에서 판단할 일이고, 이 소송이 한 가지 시사하는 바는 ARM이 모바일 시장에서 누리고 있는 독점적 지위에 대해 그만한 힘을 행사할 의지가 있는 것으로 보인다.
여차하면 라이선스 비용을 올릴 수도 있고, 라이선스 정책을 변경하여 ARM의 라이선스를 사용하는 설계 회사들의 설계 방향에 대해 관여할 수도 있다는 것이다. 이는 당연히 소송을 당한 퀄컴뿐만 아니라 삼성, 애플 모두에게도 던져지는 메시지가 있는 것이다.
ARM의 라이선스를 사용하는 설계 회사들은 시장 상황을 살펴가며 자신들이 만들고자 하는 칩의 방향이 있을 것인데, 이것에 대해 지나치게 소모적인 비용이 들거나 자신들의 설계 방향에 간섭을 받는 것을 그리 반가워할 리 없다. 이쯤에서 등장하게 되는 이름이 바로 RISC-V이다.
2010년부터 미국 UC 버클리에서 개발 중인 RISC 아키텍처로, 이를 오픈 소스로 공개하였다. 즉, '공짜로 우리가 만든 것 모두에게 보여줄 테니 다 같이 이걸 좀 개선해 보자'라는 것이다. 컴퓨터 공학과 관련된 분야에서는 이런 기술 공개가 더러 있다. 누군가 괜찮은 프로그램이나 구조를 새롭게 만들게 되더라도, 그것이 실제로 사용되면서 생기는 크고 작은 기술적 문제들이 있을 수 있다. 그러나 이를 제안하거나 만든 사람은 소수이기 때문에, 이를 혼자서 그 모든 문제들을 풀어가면서 개발하기에는 당장의 지원도 없고 함께 연구/개발해 줄 수 있는 인력이 없어 상용화하기는 어려울 수 있다. 그러나 이를 썩혀 두기에는 그 프로그램이나 구조가 가능성이 다분하다고 판단하니, 이를 오픈 소스로 공개하여 '이거 괜찮은 것 같으면 투자를 하던가 너네가 가져다가 개발해서 한번 써봐~ 대신 어떻게 발전시켜 쓰는지도 공개해야 돼!'라는 식으로 기술을 발전해 나가는 것이다.
이렇게 오픈 소스로 공개된 RISC-V는 그 기술적 성장 가능성에 대해서도 대체로 긍정적이다. 하지만 ARM이 아르키메데스를 만들어 괜찮은 성능을 보여주고도 시장 점유율 확보에 실패한 전례와 같이, 기술이 좋아도 당장의 시장을 장악하기에는 복합적인 요소가 있기 때문에 비용이 들지 않는 오픈 소스라고 무작정 쓸 수는 없는 노릇이다.
만약 어떤 회사가 '우린 이제 RISC-V으로만 칩을 설계하겠다'라고 선언하고 막상 RISC-V로 설계를 상용화하는 것에 있어서 심각한 기술적 한계점이 있어 상용 제품화가 어렵다거나 기존 프로그램들과의 호환성이 맞지 않아 시장 점유를 잃게 된다면 이는 해당 회사의 심각한 리스크가 될 수 있는 것이다.
그러니 RISC-V가 좋은 아키텍처라고 해도, 하루아침에 쉽게 이를 채택할 수는 없다. 그럼에도 불구하고 ARM이 독점적 지위를 이용해서 고객들의 설계와 정책에 간섭하기 시작한다면 자연히 '이럴 거면 오픈 소스로 갈아타? 갈아타면 이제 누구 눈치 보면서 설계할 일 없잖아?'라는 생각이 들 수밖에 없다. 그래서 애플, 퀄컴, 삼성, 구글 등에서도 RISC-V로 아키텍처를 전환하게 될 수 있는 옵션도 충분히 고려되는 것이다.
특히나 애플은 시장 지배력이 강하다 보니 애플의 PC 및 노트북 시리즈가 인텔의 x86 진영에서 ARM 진영으로 넘어오는 것도 비교적 수월했고 어렵지 않았다. 애플이 기존에 가지고 있는 전문가용 프로그램들은 당연히 애플이 자체적으로 호환될 수 있도록 변경가능하고, 애플의 제품을 사용하는 소비자들이 많으니 주요 소프트웨어를 개발/판매하는 회사들은 새로운 아키텍처에서도 구동할 수 있도록 그들의 소프트웨어를 수정하여 출시하기도 했다. 심지어 이런 아키텍처 전환이 처음도 아니니 애플이 어느 날 갑자기 '이제 우린 3년 뒤부터 RISC-V로 새로운 칩을 만들 것이다'라고 해도 전혀 이상한 일이 아닐 것이다. 그리고 그런 애플을 뒤따라 다른 회사들도 그 뒤를 따르는 그림도 충분히 개연성이 있는 시나리오일 수 있다.
그러니 ARM 역시도 단지 한 시대를 풍미한 회사로 남게 될지, 또는 앞으로도 꾸준히 시장의 지배력을 잃지 않고 반도체 산업의 주요 멤버로 남을 수 있을지는 지켜볼 일이다.