KR101299999B1 - 소프트웨어 코드 획득 시스템 및 방법과, 대응 호스트컴퓨터와, 소프트웨어 송신 방법과, 관련 제품 - Google Patents

소프트웨어 코드 획득 시스템 및 방법과, 대응 호스트컴퓨터와, 소프트웨어 송신 방법과, 관련 제품 Download PDF

Info

Publication number
KR101299999B1
KR101299999B1 KR1020060005797A KR20060005797A KR101299999B1 KR 101299999 B1 KR101299999 B1 KR 101299999B1 KR 1020060005797 A KR1020060005797 A KR 1020060005797A KR 20060005797 A KR20060005797 A KR 20060005797A KR 101299999 B1 KR101299999 B1 KR 101299999B1
Authority
KR
South Korea
Prior art keywords
code
host computer
sik
software
nak
Prior art date
Application number
KR1020060005797A
Other languages
English (en)
Other versions
KR20060084395A (ko
Inventor
데니스 빌러스
얀 로쎌
Original Assignee
톰슨 라이센싱
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 톰슨 라이센싱 filed Critical 톰슨 라이센싱
Publication of KR20060084395A publication Critical patent/KR20060084395A/ko
Application granted granted Critical
Publication of KR101299999B1 publication Critical patent/KR101299999B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09BEDUCATIONAL OR DEMONSTRATION APPLIANCES; APPLIANCES FOR TEACHING, OR COMMUNICATING WITH, THE BLIND, DEAF OR MUTE; MODELS; PLANETARIA; GLOBES; MAPS; DIAGRAMS
    • G09B19/00Teaching not covered by other main groups of this subclass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Educational Administration (AREA)
  • Educational Technology (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 디바이스 내의 소프트웨어 코드(SW)를 호스트 컴퓨터로부터 획득하기 위한 시스템(1) 및 방법과, 호스트 컴퓨터와, 소프트웨어 송신 방법에 대한 것이다.
이 시스템은 소프트웨어 코드의 적어도 하나의 코드 부분의 수신 수단(11)(적어도 두 개의 이용가능한 경합 코드 부분(Sik)이 다운로드되기 위한 디바이스에 동시에 제안됨)과, 연속적인 부정적인 확인응답(NAK)을 각각의 경합 부분에 대한 컴퓨터에 전송하는 지연 수단(13)과, 이용가능한 경합 부분 중에서 수신될 코드 부분의 선택 수단(14)을 포함하며, 지연 수단은 선택된 부분에 대한 부정적인 확인응답을 전송하는 것을 중단해서, 수신 수단은 선택된 부분만을 수신한다.
본 발명은 DSL 모뎀에 이용 가능하다.

Description

소프트웨어 코드 획득 시스템 및 방법과, 대응 호스트 컴퓨터와, 소프트웨어 송신 방법과, 관련 제품{SYSTEM AND PROCESS FOR ACQUIRING A SOFTWARE CODE, CORRESPONDING HOST COMPUTER AND SOFTWARE TRANSMISSION PROCESS AND ASSOCIATED PRODUCTS}
도 1은 디바이스(본 발명에 따른 획득 시스템을 포함함)에 연결된 호스트 PC를 포함하는 로컬 네트워크 배열을 도시하는 도면.
도 2는 도 1의 획득 시스템의 블록도.
도 3은 도 1의 호스트 PC의 블록도.
도 4는 도 2의 획득 시스템 및 도 3의 호스트 PC의 실시예를 사용하는, 도 1의 로컬 네트워크 배열의 예를 나타내는 도면.
도 5는 제1 스왑 시퀀스에서, 도 4의 예시된 로컬 네트워크 배열 내의 호스트 PC와 디바이스 사이의 교환을 나타내는 도면.
도 6은 제2 스왑 시퀀스에서, 도 4의 예시된 로컬 네트워크 배열 내의 호스트 PC와 디바이스 사이의 교환을 나타내는 도면.
도 7은 DSL을 위한, 도 2 및 4 내지 6의 디바이스의 특정 실시예를 도시하는 도면.
도 8은 4개의 스왑 가지, 및 이 가지를 기초로 하는 4개의 잠재적인 스왑 시 퀀스를 포함하는 스왑 페이지 토폴로지를 설명하는 도면.
도 9는 도 8의 스왑 페이지 토폴로지를 처리하기 위해, 도 2의 획득 시스템의 4개의 종단점을 가능하게 하는 구현예와 도 3의 호스트 PC에 의해 사용되는, 4개의 IRP를 도시하는 도면.
본 발명은 디바이스 내의 소프트웨어 코드를 획득하는 시스템 및 방법과, 호스트 컴퓨터와, 소프트웨어 송신 방법과, 관련 디바이스 및 컴퓨터 프로그램에 대한 것이다.
USB 버스를 통해 호스트 PC("개인용 컴퓨터")에 연결되는, USB("범용 직렬 버스") 버스-구동(bus-powered) ADSL("비대칭 디지털 가입자 회선") 모뎀 제품은 높은 비용 압력을 겪는다. 이는 호스트측에 많은 기능을 요구한다.
이전 세대에서, USB ADSL 제품에 필요한 소프트웨어가 PC에 저장되어 플러그인 시에 이러한 DSL 모뎀에 다운로드됨에 따라, 플래시 메모리에 대한 필요성이 사라졌다. 다운로드된 소프트웨어는 이후 모뎀의 SDRAM("싱크로너스 DRAM")에 저장된다. 이러한 소프트웨어의 큰 부분이 모뎀 동기화 및 상호운용성에 사용되어 왔으며 추가적인 개선에 대한 융통성을 필요로 한다.
현재, 단지 온-칩(on-chip) SRAM("스태틱 RAM")을 사용함으로써, 모뎀 비용을 더욱 감소시키기 위해 USB 버스-구동 모뎀으로부터 SDRAM을 제거하는 것이 매력 적이다-실로, SDRAM은 더욱 양호한 밀도를 갖도록, SRAM 및 표준 로직에 대해 별도의 기술 층을 사용하며, 따라서 동일 칩 위에 놓여질 수 없다. 그러나, 풀 빌드 온-칩(full build on-chip)은, 비용 효율적이지 않은, 대형 집적 SRAM을 요구한다.
모뎀에서 프로세서 프로그램 전개(a processor program evolution)가 요구될 때, 감소된 저장 공간을 구비하지 않은 모뎀에 PC 소프트웨어를 제공하기 위한 해결책이 소프트웨어를 작은 조각(small pieces)으로 다운로드하는데 존재한다. 이때, 모뎀의 디지털 IC("집적 회로") 내의 소형 SRAM으로 충분할 수 있다. 이러한 메커니즘은 "스와핑", 즉, (풀 빌드를 포함하는)호스트 컴퓨터 내의 보조 메모리 영역의 콘텐츠를 주 메모리 영역(크기가 제한된 모뎀 프로세서 메모리)에 복사함으로써 허용될 것이다. 따라서, 모뎀에 의해 PC에 제출된 각각의 요청시에, 연속적인 코드"페이지" 또는 "스왑"이 PC로부터 모뎀으로 다운로드될 것이다.
이제, 이러한 조각의 전달의 동기화를 보장하는 것이 중요하다. 그러나, 이러한 코드 스왑 메커니즘은 개별적인 코드 조각의 다운로딩에 대한 시간 의존성을 초래할 것인데, 그 이유는 PC가 전송될 조각을 준비하는데 송신 지연을 야기할 것이기 때문이다(호스트 반응 지연).
본 발명은 디바이스 내의 소프트웨어 코드를 호스트 컴퓨터로부터 획득하기 위한 시스템에 관한 것으로서, (SDRAM 요소를 필요로 하지 않고도)실시간으로 소프트웨어를 수신하고 효과적으로 사용하기 위한 디바이스에서 단순한 SRAM을 사용하는 것을 가능하게 할 수 있다. 본 발명의 시스템은 따라서, 위에서 언급된 동기화 문제를 극복할 수 있다. 본 발명의 시스템은 실로, 바람직한 실시예에서, PC 상태(OS 유형-"운영 체제", 부하, 프로세서 성능, 등)에 대한 의존성을 두드러지게 감소시킬 수 있다.
본 발명은 또한 이러한 시스템을 포함하는 디바이스뿐만 아니라, 동일한 잠재적인 이점을 갖는 대응 방법 및 컴퓨터 프로그램과 관계 있다.
본 발명은 나아가, 바람직하게는 본 발명의 획득 시스템 및 방법과 연계해서, 위 이점을 제공할 수 있는, 호스트 컴퓨터와, 소프트웨어 송신 방법 및 관련 컴퓨터 프로그램에 대한 것이다.
이러한 디바이스가 호스트 PC로부터 운영 소프트웨어를 수신해야 하는 한, 본 발명은 특히 DSL 모뎀 분야에 사용할 뿐만 아니라, (특히 홈 네트워크용 의)다른 종류의 로컬 네트워크 디바이스에도 사용한다.
이를 위해, 본 발명은 디바이스 내의 소프트웨어 코드를 호스트 컴퓨터로부터 획득하기 위한 시스템에 대한 것으로서, 이 시스템은 디바이스를 위해 의도된 소프트웨어 코드의 적어도 하나의 코드 부분을 호스트 컴퓨터로부터 수신하기 위한 수신 수단을 포함한다.
본 발명에 따르면, 적어도 두 개의 이용가능한 경합 코드 부분(competing available code portions)이 디바이스에 다운로드되기 위해 호스트 컴퓨터로부터 이 디바이스에 동시에 제안되는데, 시스템은:
- 연속적인 부정적인 확인응답을 디바이스로부터, 이용가능한 경합 부분 각각에 대한 호스트 컴퓨터에 전송할 수 있는 지연 수단,
- 및 이용가능한 경합 코드 부분 중에서 수신될 코드 부분을 선택하도록 의도되는 선택 수단을 포함한다.
지연 수단이 선택 수단에 의해 선택된 부분에 대한 부정적인 확인응답을 전송하는 것을 중단함으로써, 수신 수단이 선택된 부분과 경합하는 이용가능한 코드 부분을 제외하고 선택된 부분만을 수신한다.
따라서, 수신 측에서 제한된 메모리 자원만을 갖고 있는 동안 소프트웨어 코드가 매우 융통성있는 방식으로 다운로드될 수 있으나, 이 디바이스에 의해 동기화가 정확하게 제어되는 것이 매우 쉽다. 이는, 디바이스에 의해 특정 요건을 고려하는, 동적인 방식으로, 부정적인 확인응답, 또는 NAK을 사용하는 덕분에 행해진다.즉, 디바이스가 효과적으로 스왑 페이지를 요구하기 전에, 스왑 페이지가 IRP(인/아웃 요청 패킷)를 통해 디바이스에 전송되기 위해 파이프에 이미 존재할 수 있다. 본 발명의 시스템은 이로써 하드 디스크 액세스, 인터럽트, OS 또는 성능과 같은 호스트 부하에 대한 의존성을 제거하기 쉬울 수 있다.
이러한 결과는, 호스트 PC 및 디바이스를 구비하는 시스템의 가장 예측할 수 없는 부분이 디바이스로부터의 페이지 스왑 요청에 대한 PC 상의 OS의 반응 시간이라는 것을 실험이 보여 왔다는 점에서, 더욱더 흥미롭다. 이는 CPU("중앙 처리 장치") 및 디스크 액세스 부하 하의, 일부 OS 버전에서 더욱 중요하다. 이러한 의존성은 디바이스에 의해 다음 페이지의 요청을 응답시에 호스트 컴퓨터를 매우 느리게 만들 수 있으며, 따라서, 실시간 소프트웨어에 대한 지연 제한(latency constraint)에서 실패한다. 대조적으로, 본 발명이 시스템은 코드 스와핑 동안에 호스트 OS로부터의 반응에 의존하지 않는 메커니즘을 제공할 수 있다.
본 발명으로 인해, 상이한 미리 정해진 시나리오가 호스트 컴퓨터 내의 병렬 IRP를 통해 프로그래밍될 수 있는데, 디바이스의 요구가 나타날 때, 뒤따를 적당한 방식을 결정할 능력을 디바이스가 구비한다. 이 소프트웨어 다운로딩 성취는 이후 디바이스에 의해 실시간으로 조정되기 쉽다. 바람직한 실시예에서, 이는 코드 스왑 트리 내의 적당한 가지를 따라 전진하는 것일 수 있다.
획득 시스템은 따라서 호스트 컴퓨터 상태(OS 유형, 부하, 프로세서 성능...)에 대한 의존성을 상당히 감소시킬 수 있다.
아래에서, 동사 "NAK"와 "ACK"는, 어떠한 대상(some object)이 부정적인 확인응답 또는 긍정적인 확인응답이기 쉽다는 것을 각각 나타내기 위해, 간략함을 위해 사용된다.
최종적으로 다운로드된 소프트웨어 코드는 바람직하게는, 몇 개의 연속적인 코드 부분을 포함한다. 그러나, 획득 시스템의 특별한 응용에서, 이 코드는 단일한 부분으로 제한될 수 있다. 임의의 경우에, 적어도 두 개의 코드 부분이 디바이스에 다운로드되기 위해 경합하는데, 디바이스는 이때 두 개의 코드 부분 중에서 선택해야 한다.
호스트 컴퓨터가 디바이스에 코드 부분을 "제안하는" 방식은 본 발명에 따라 다양한 방식으로 행해질 수 있다. 바람직한 실시예에서, 이는, 호스트 컴퓨터 내의 소정의 IRP를 기초로 해서, 호스트 컴퓨터로부터 디바이스로의 연속적인 전달 시도 를 통해 행해진다. 각각의 IRP는 이때, 몇 개의 데이터 패킷으로 구성되는 적어도 하나의 코드 페이지(여기에서 코드 부분이라 함)를 포함한다. 각각의 관련된 IRP의 현재 페이지에 대한 전달 시도가 이 페이지의 제1 패킷을 디바이스에 전송함으로써 행해진다. 이 페이지는 특히 페이지 존재(page identity)(일반적으로 페이지 번호)에 대한 정보를 포함하는데, 이 페이지 존재는 디바이스가 제안된 페이지를 인식할 수 있게 하고 그에 따라 반응할 수 있게 한다. 제안된 페이지가 NAK되는 한, 호스트 컴퓨터에 의해 전부 전송되지 않는다. 대조적으로, NAK의 전송이 이 페이지의 제1 패킷에 대해 중단되는 한, 지연 없이 전체 페이지가 전송될 수 있는데, 그 이유는 이미 준비되어 있고 전송을 대기하고 있기 때문이다.
선택된 페이지가 수용되는 동안 계속해서 NAK되는, 경합 페이지(또는 페이지들)는 이후, 호스트 컴퓨터에 의해 처리된다. 바람직한 실시예에서, 경합 페이지는 각각의 IRP를 이용해 호스트 컴퓨터에서 정의된 상이한 가지 부분이며, 디바이스에 의해 경합 페이지 중 하나를 선택하는 것이 함축적으로는 가지 중 하나를 선택하는 것을 초래한다. 호스트 컴퓨터는 이때 유리하게는, 비-선택된 가지(들)에 대응하는 IRP는 삭제하고, 다른 가지들만 유지한다.
바람직하게는, 시스템은 또한:
- 디바이스에 대해 제안된 경합 코드 부분 중 어떠한 것도 선택 수단에 의해 선택되기에 적당하지 않은 경우, 선택된 부분에 대한 부정적인 확인응답을 전송하는 것을 중단하기 전에 그리고 선택된 부분을 수신 수단에서 수신하기 전에 적어도 하나의 송신 요청을 디바이스로부터 호스트 컴퓨터에 전송하기 위한 요청 수단
을 포함한다.
특정 구현예에서, 디바이스에 의해 호스트 컴퓨터로 전송된 요청은 디바이스에 의해 요구되는 다음 페이지가 컴퓨터 측에서 이용가능한지 여부를 나타낼 수 있다. 요청된 페이지가 이용 가능하지 않은 경우, 호스트 컴퓨터는 이전에 제안된 페이지 중 적어도 하나 대신에 적어도 정확한 페이지를 제안한다(추가적인 페이지가 또한, 현재 요청 때문에 비-선택가능하다고 고려되는 다른 제안된 페이지의 삭제 후에 정확한 페이지와 병렬로 제안될 수도 있다). 다른 한편, 요청된 페이지가 이용 가능한 경우(호스트 컴퓨터에 의해 디바이스에 효과적으로 제안되었기 때문임), 지연없이 다운로드될 수 있다. 후자의 경우에, 디바이스에 의한 요청의 송신은 실행 흐름을 따름으로써 파이프가 안전하게 삭제될 수 있는지를 더욱 즉각적으로 알도록 호스트 컴퓨터에 의해 이용될 수 있다.
이러한 요청 메커니즘은 따라서, (잠재적으로 경합 코드 부분의 수가 종단점의 수 만큼 제공되는 바람직한 실시예에서, 디바이스 측의 종단점의 수처럼) 호스트 컴퓨터로부터 디바이스로의 불충분한 수의 병렬의 이용가능한 트랙으로 인해, 경합 코드 부분에 대한 모든 가능한 선택이 병렬로 제안될 수 없을 때, 특히 흥미롭다. 이러한 경우에, 경합 코드 부분 중 하나(또는 수 개)를 디바이스에 의한 요청에 대응하는, 다른 하나로 대체하기 위해 제공할 수 있다. 이러한 방식으로, 호스트 컴퓨터에 의해 후속되는 처리가 더욱 많은 융통성 및 더욱 많은 효율을 제공한다.
디바이스로부터 호스트 컴퓨터로의 요청이 특히, 양 장치 사이의 인터럽트 메커니즘을 이용해, 예컨대, USB 버스의 특정 채널을 통해 전송될 수 있다. USB 버스의 경우에, 호스트 컴퓨터는 일반적으로 주기적인 인터럽트를, 이를 테면 매 밀리초마다 디바이스에 요청하며, 이 인터럽트 중 임의의 것은 다음 요청을 위한 디바이스에 의해 사용될 수 있다.
유리하게는, 수신 수단, 지연 수단 및 선택 수단이 적어도 두 개의 연속적으로 수신된 코드 부분에 대해 제공된다. 이는 획득 시스템의 응용 분야를 몇 가지 이용가능한 코드 부분 중에서 제안된 단일한 코드 부분을 단순히 다운로딩하는 것 이상으로 확장시킨다.
바람직하게는, 지연 수단이 선택된 부분에 대한 부정적인 확인응답을 전송하는 것을 중단하는 경우, 지연 수단은 선택되지 않은 이용가능한 코드 부분 각각에 대한 부정적인 확인응답을 전송하는 것을 계속할 수 있다.
따라서, 비-선택된 부분은 가능하게는, 다음 다운로딩 단계 동안, 또는 추후에 삭제 결정하는 동안 이용가능하게 존재한다. 그러나, 모든 선택되지 않은 경합 코드 부분에 대해 호스트 컴퓨터 측에서 시스템적인 삭제(systematic canceling)를 제공할 수도 있다. 이러한 경우에, 비-선택된 부분이 NAK하는 것은 더 이상 필요하지 않다.
바람직한 실시예에 따르면:
- 수신 수단은 이용가능한 경합 코드 부분 중 적어도 두개를 각각 수신하기 위한 적어도 두 개의 종단점을 포함하며,
- 지연 수단은 호스트 컴퓨터에 종단점 각각에 대한 연속적인 부정적인 확인 응답을 전송할 수 있다.
이용가능한 경합 코드 부분과 종단점 사이에서 적어도 부분적으로 통신을 확립하는 것이 특히 효율적이고 편리하며, 비교적 용이한 구현을 가능하게 한다. 이때, (나머지 엔트리점과 관련된 모든 송신 요청을 NAK함으로써) 디바이스 내의 하나의 엔트리점으로부터 다른 엔트리점으로 스위칭하는 것이 스왑 시퀀스로부터 다른 적당한 시퀀스로 변하게 할 수 있다. 이러한 실시예의 이점은 병렬 경합 코드 부분당 하나의 종단점의 사용에 대해 한층 더 분명하다.
그러나, 이용가능한 종단점의 수가 제한됨에 따라, 병렬 제안 대신에 연속적인 단계를 이용해 처리하는 것이 필요하다고 할 수 있다. 특히, 호스트 컴퓨터가 소프트웨어 코드를 송신하는 동안에, (특히, 코드 부분의 추가적인 가지에 전용된 새로운 IRP를 통해) 추가적인 코드 부분 제안을 추후에 시작할 수 있다. 이는 이용가능한 종단점보다 더 많은 코드 페이지가 제공되어야 할 때 특히 발생할 수 있다. 여하튼, 이러한 경우조차도, 호스트 컴퓨터의 반응 시간에 대한 의존성이 전부 삭제되지는 않으나, 상당히 감소될 수는 있다. 또한, 페이지 지연이 덜 중요할 때 발생하도록, 이러한 새로운 송신 요청의 발생이 미리 결정될 수 있다.
호스트 컴퓨터가 다른 또는 보충 기술을 이용해서, 특히, 동일 종단점 상의 인터리빙된 코드 부분 제안에 의해, 병렬 코드 부분 제안을 디바이스에 전송하는 것이 또한 다른 종류의 구현예에서도 가능하다.
경합 코드 제안 부분에 대해 사용된 종단점의 수가 바람직하게는 한편으로는 디바이스의 성능 및 코스트와, 다른 한편으로는 소프트웨어 시간을 충족시킬 확률 사이에서 절충을 고려함으로써 선택된다(페이지 지연 요건). 특히, IC 다이 크기가 이러한 절충을 위해 고려되어야 한다.
바람직한 실시예에서, 획득 시스템은 수신된 코드 부분을 일시적으로 저장하기 위한 저장 공간을 포함하는데, 이러한 저장 공간은 바람직하게는 SRAM으로 구성된다.
각각의 코드 부분은 따라서, 사용되기 전에 수신 디바이스에 모두 저장될 수 있다. 코드 부분의 크기는 적절하게 선택될 수 있어, SRAM과 같은 작은 크기의 저장 공간만이 필요하다. 디바이스는 이후, 전체 소프트웨어 코드 부분이 수신될 때, 이 코드 부분을 사용할 수 있다.
변형 실시예에서, 디바이스는 부분적으로, 그리고 비 전체적으로, 수신된 코드 부분을 저장하도록 설계되어, 특별한 사용 메커니즘이 다양한 부분 조각(various pieces of portions)을 연속 처리하기 위한 디바이스 크기로 구현되어야 한다.
수신 수단 및 지연 수단은 유리하게는, USB 버스를 거쳐 호스트 컴퓨터와 통신하기 위해 제공된다.
이러한 USB 버스는 응용 보드 상의 플래시를 사용하는 대신에, 코드 스왑을 실행하도록 사용될 수 있다.
바람직하게는, 지연 수단은 수신 수단이 선택된 부분을 수신하기 전에 적어도 하나의 긍정적인 확인응답을 디바이스로부터, 선택된 부분에 대한 호스트 컴퓨터로 전송하기 위해 제공된다.
획득 시스템은 따라서 선택된 부분에 대해 NAK를 전송하는 것, 가능하게는 추가적으로 이 부분에 대한 요청을 송신하는 것을 중지할 뿐만 아니라, 호스트 컴퓨터에 하나 또는 몇 개의 연속적인 ACK를 전송한다. 따라서, 컴퓨터 측에서 대기하고 있는 다음 부분의 분명한 수용이 제공된다. 바람직한 실시예에서, 코드 부분은 복수의 패킷 각각으로 되며, ACK는, 하나의 부분의 다운로딩이 디바이스 측에서 일단 결정되면, 이러한 부분의 모든 패킷에 대해 연속적으로 전송된다.
본 발명의 특정 구현예에 따르면, 호스트 컴퓨터가 아웃 토큰(OUT token)을 디바이스에 전송하도록 적응되는데, 이 디바이스는 NAK 또는 ACK에 의해 즉시 대답하도록 적응된다. 이때, 이 디바이스가 아웃 토큰을 NAK하는 경우, 호스트 컴퓨터는 코드 페이지의 동일 부분을 추후에 재전송하기 위해 시도할 것이다.
본 설명에서, 인 토큰(IN token)에 대해 NAK하는 것이 통상 공지의 시스템에서 행해지는 것과 같이 적당히 추가적으로 사용될 수 있으나, 여기서는 일반적으로인 토큰이 아닌, 아웃 토큰과 관련된 NAK를 고려한다.
다른 실시예에서, 디바이스에 의해 전송하는 NAK의 단순한 중단은 호스트 컴퓨터에 의해, 대응하는 다음 부분의 송신을 야기한다. 따라서, 부분의 수용은 여기서 함축적이며, ACK의 전송을 필요로 하지 않는다.
본 발명은 또한 발명의 실시예 중 하나에 따른 획득 시스템을 포함하는 디바이스에 적용하며, 이 디바이스는 바람직하게는 DSL 모뎀에 존재한다. 이 디바이스는 유리하게는, 수신된 소프트웨어 코드를 실시간으로 사용하도록 의도된다.
본 발명은 추가적으로 호스트 컴퓨터로부터 디바이스 내의 소프트웨어 코드 를 획득하는 방법에 대한 것으로서, 이 획득 방법은 디바이스를 위해 의도된 소프트웨어 코드의 적어도 하나의 코드 부분을 호스트 컴퓨터로부터 수신하는 단계를 포함한다.
본 발명에 따르면, 적어도 두 개의 이용가능한 경합 코드 부분이 디바이스에 다운로드되기 위한 호스트 컴퓨터로부터 이 디바이스에 동시에 제안되는데, 획득 방법은:
- 이용가능한 경합 코드 부분 각각에 대해 디바이스로부터 호스트 컴퓨터로, 연속적인 부정적인 확인응답을 전송하는 단계,
- 이용가능한 경합 코드 부분 중에서 수신될 코드 부분을 선택하는 단계,
- 및 선택된 부분과 경합하는 이용가능한 코드 부분을 제외하고 이 선택된 부분만이 디바이스에 의해 수신되도록, 선택된 부분에 대한 부정적인 확인응답을 전송하는 것을 중단하는 단계
를 포함한다.
이 방법은 바람직하게는, 본 발명의 임의의 실시예에 따른 획득 시스템에 의해 실행되도록 의도된다.
본 발명의 다른 목적은, 프로그램이 컴퓨터 상에서 실행될 때, 본 발명에 따른 획득 방법의 단계를 실행하기 위한 프로그램 코드 명령어를 포함하는 컴퓨터 그로그램 제품이다. "컴퓨터 프로그램 제품"에 의해, 디스켓 또는 카세트와 같은 프로그램을 포함하는 저장 공간뿐만 아니라 전기 신호 또는 광 신호와 같은 신호로 존재할 수 있는, 컴퓨터 프로그램 지원(computer program support)가 의미된다.
본 발명의 다른 목적은:
- 적어도 두 개의 코드 부분 형태의 소프트웨어 코드를 저장하는 저장 수단,
- 이 코드 부분을 디바이스에 송신하는 송신 수단,
- 및 부정적인 확인응답의 수신이 중단될 때까지, 임의의 코드 부분에 대해 디바이스로부터 부정적인 확인응답을 수신시에 이 코드 부분을 디바이스에 송신하는 것을 지연하는 지연 수단
을 포함하는 호스트 컴퓨터이다.
본 발명에 따르면, 호스트 컴퓨터는 또한:
- 송신을 위해 시간에 따라 경합하는 코드 부분 중 적어도 두 개를 디바이스에 동시에 제안하기 위한 가지화 수단(branching means)으로서, 이러한 이용가능한 경합 코드 부분 각각의 송신이 지연 수단에 의해 지연되기 쉬운, 가지화 수단
을 포함한다.
호스트 컴퓨터는 바람직하게는, 본 발명의 임의의 실시예에 따른 획득 시스템과 협력하도록 설계된다.
호스트 컴퓨터가 전달될 전체 소프트웨어 코드를 재량껏 구비함에 따라, 코드의 토폴로지를 고려하기 위해 이 코드를 사용할 수 있다. 즉, 코드 부분이 바람직하게는, 몇 개의 이용가능한 코드 부분 중에서 원하는 코드 부분을 선택하기 위해, 디바이스에 몇 개의 이용가능한 코드 부분을 적당히 제안하도록 선택된다. 이는 컴퓨터 상태에 대한 코드 스왑 메커니즘의 시간 의존성을 뚜렷이 감소시킬 수 있거나, 심지어 삭제할 수 있는 한편, 디바이스 측의 비교적 작은 저장 공간을 충 분하게 만든다.
바람직한 실시예에서, 가지화 수단은 디바이스의 적어도 두 개의 상이한 종단점 각각에 대해 경합 코드 부분을 디바이스에 동시에 제안하도록 의도된다.
이는 디바이스 측에 대해 위에서 설명된 것에 대응한다. 호스트 컴퓨터는 따라서, 종단점의 수만큼 많은 코드 부분 제안(또는 코드 부분의 큐의 경우에 종단점의 수만큼 많은 IRP)을 시작할 수 있다.
몇 개의 연속적인 페이지 형성 큐가 개별적인 부분 대신에 고려될 때, 호스트 컴퓨터에서의 조직된 전략(organized strategy)이 한층 더 흥미로운데, 이는 특히 IRP를 통해 가능하다. 이때, 호스트 컴퓨터는 단지, 각각의 큐(또는 가지)를 전송하는 것을 시작해야 하는데, 몇 개의 큐는 병렬로 전송되기 쉽다.
따라서, 호스트 컴퓨터는 바람직하게는, 전송을 위해 디바이스에 연속 제안될 코드 부분 중 적어도 두 개의 가지를 가지화 수단에 제공하도록 의도되는 연쇄화 수단을 포함하는데, 가지 각각은 가지 중 다른 것의 코드 부분 중 적어도 하나와 시간에 따라 경합하는 코드 부분 중 적어도 하나를 포함한다.
이러한 실시예에서, 두 개의 차원이 컴퓨터 측에서 함께 고려된다는 것을 주목해야 한다:
- "수직" 차원(임의의 소정의 시간에 경합 코드 부분에 대응함),
- 및 "수평" 차원(가지 각각 내의 연속적으로 조직된 코드 부분에 관련됨)으로서; 가지의 일부가 디바이스에 제안될 때, 이 가지의 다른 잔류 부분은 호스트 컴퓨터에 미리 준비되며, 이 가지의 이전 부분이 이미 전송되었을 때(또는, 변형예 에서, 이전에 삭제되었을 때)는 이 가지의 다른 잔류 부분은 제안되도록 대기.
바람직하게는, 가지의 구성은 다양한 파라미터(이용가능한 트랙 수, 소프트웨어 구조화, 페이지의 크기)를 고려해서, 호스트 컴퓨터의 사용자에 의해 미리 결정된다.
또한, 호스트 컴퓨터는 바람직하게는, 임의의 요청이 디바이스로부터 전송되기 전에, 유리하게는 종단점 만큼 많은 가지를 이용해서 경합 가지에 대해 IRP를 시작한다. 모든 이러한 가지가 제1 단계에서 디바이스에 의해 NAK된다. 제1 코드 부분이 속하는 가지 중 하나가 NAK되는 것을 중지하는 순간, 이 코드 부분이 전송된다.
실제로, 호스트 컴퓨터의 유리한 구현예에 따르면, 하나의 애플리케이션이 가지 중 어느 하나(IRP)를 이용해서 버퍼 콘텐츠를 구동기에 전송하는데, 이때 구동기는 이 콘텐츠를 기계적인 방식으로(예컨대 연속적인 USB 패킷 형태로) 디바이스에 전송하려고 시도한다. 디바이스로부터의 연속적인 NAK의 수신은 이러한 전송을 지연시킨다.
바람직한 실시예에 따르면, 가지 중 적어도 하나는 코드 부분 중 적어도 두 개를 포함한다.
더욱 구체적으로, 각각의 가지 내의 몇 개의 코드 부분의 존재는 프로그램 실행의 다양한 잠재적인 전개(potential evolution)를 고려하는데 효율적인 툴을 제공한다.
다른 실시예에서, 각각의 가지는 단일 부분으로 감소된다. 이러한 경우에, 실행될 소프트웨어 코드가 하나의 부분에 모두 포함되는 매우 특별한 실시예에 추가해서, 호스트 컴퓨터가 유리하게는, 코드 부분의 동일한 패턴의 반복적인 연속을 제공한다. 예컨대, 부분(A, B, C 및 D)이 디바이스에 동시에 제안되고, 디바이스가 연속적으로 A, B, C 및 D를 선택한 후, 다시 A, B, C 및 D를 선택하는 등이다. 소정의 부분이 선택될 때마다, 호스트 컴퓨터 내의 관련 IRP의 추가적인 개시를 통해, 동일한 트랙에서 추후에 다시 제안된다. 이러한 방식으로, 시작 단계로 인해 코드 다운로딩시에 슬로우다운(slowdown)을 회피할 수 있는데, 그 이유는 다른 이미 이용가능한 부분(예컨대, B, C 및 D)을 슬로우다운하는 동안에, 아직 이용가능하지 않은 다음 부분(예컨대 A)의 호스트 컴퓨터 내에서 준비가 발생한다.
바람직하게는, 호스트 컴퓨터가, 가지화 수단에 의해 디바이스에 제안된 코드 부분의 가지 중 하나의 현재 제안된 코드 부분에 대한 부정적인 확인응답을 수신하는 한편 다른 가지의 현재 제안된 코드 부분에 대한 부정적인 확인응답을 수신하는 것을 중지한 후에, 가지화 수단에 의해 디바이스에 제안된 코드 부분의 가지 중 하나를 삭제할 수 있는 삭제 수단을 포함한다.
이러한 실시예는 호스트 컴퓨터 측에 메모리 공간을 여유있게 할 수 있어, 제안된 가지는, 디바이스에 의한 이전 선택에 비추어, 다음 단계 동안 쓸모없게 된다. 또한, 해제된 트랙(released track) 내의 추가적인 소프트웨어 가지의 전송의 재시작을 허용할 수 있다. 이러한 결정은 바람직하게는, 소프트웨어 코드 토폴로지에 관해 초기에 레코딩된 전략의 함수로, 호스트 컴퓨터에 의해 자동으로 이루어진다.
이는 바람직하게는, 디바이스에 의한 로딩된 가지의 잠재적인 요구를 예상함으로써 행해져, 컴퓨터 준비 동작으로 인해 어떠한 시간도 유실되지 않는다. 그러나, 디바이스로부터 대응 요청이 수신될 때-특히 (종단점과 같은)이용가능한 트랙의 수가 소정의 순간에 디바이스에 의한 잠재적인 선택의 수에 대해 충분하지 않을 때, 다음 가지의 로딩이 실시간으로 행해져야 하는 것이 또한 발생할 수 있다. 이전에 주목된 바와 같이, 이러한 동작은 이후 바람직하게는, 페이지 지연이 덜 중요할 때만 프로그래밍되어야 한다.
본 발명은 또한:
- 적어도 두 개의 코드 부분의 형태의 소프트웨어 코드를 저장하는 단계,
- 이 코드 부분을 디바이스에 송신하는 단계,
- 및 부정적인 확인응답의 수신이 중단될 때까지, 임의의 코드 부분에 대해 디바이스로부터 부정적인 확인응답을 수신시에 이 코드 부분을 디바이스에 송신하는 것을 지연하는 단계
를 포함하는 소프트웨어 송신 방법을 포함한다.
본 발명에 따르면, 소프트웨어 송신 방법은 또한:
- 송신을 위해 시간에 따라 경합하는 코드 부분 중 적어도 두 개를 디바이스에 동시에 제안하는 단계로서, 이러한 이용가능한 경합 코드 부분 각각의 송신이 부정적인 확인응답을 통해 지연되기 쉬운, 제안 단계
를 포함한다.
이러한 소프트웨어 송신 방법은 바람직하게는, 본 발명의 임의의 실시예에 따른 호스트 컴퓨터에 의해 실행되는 것이 의도된다.
본 발명의 다른 목적은, 프로그램이 컴퓨터 상에서 실행될 때, 본 발명에 따른 송신 방법이 단계를 실행하기 위한 프로그램 코드 명령어를 포함하는 컴퓨터 프로그램 제품이다.
본 발명은 첨부 도면을 참조해서, 결코 제한하지 않는 방식으로, 후술하는 실시예 및 실행 예를 이용해 더욱 잘 이해되고 설명될 것이다.
도 1 내지 3에서, 나타난 블록은 단순히, 물리적인 분리된 개체에 반드시 대응하지는 않는, 기능적인 개체이다. 즉, 이 블록은 소프트웨어 형태로 개발될 수 있거나, 하나 또는 몇 개의 집적 회로로 구현될 수도 있다.
더욱이, (예컨대 "3A"와 같이)글자로 완성되기 쉬운 일반적인 표기법(generic number notation)은 소정의 모델 객체(디바이스((3))를 언급하며, 특정 실시예(글자 "A")를 나타낸다.
로컬 네트워크 배열(도 1)은 양-방향 링크(5)를 거쳐, 디바이스(3)에 연결된 호스트 PC(2)를 포함한다. 디바이스(3)는 PC(2)로부터 소프트웨어(SW)를 획득하는 획득 시스템(1)과, 이 다운로드된 소프트웨어(SW)를 사용하는 사용 유닛(4)을 포함한다. 설명된 실시예에서, 사용 유닛(4)은 소프트웨어(SW)가 다운로드될 때, 실시간으로 이 소프트웨어를 사용하도록 의도된다.
획득 시스템(1)(도 2)은:
- 연속적인 스왑 페이지(Sj)(j= 1, 2, 3...)의 송신(도 2 상의 실선 화살표)을 통해, 소프트웨어(SW)를 PC(2)로부터 수신하기 위한 수신 모듈(11)을 포함한다; 스왑 페이지의 동시적인 제안 중 하나에 대한 송신이 디바이스(3)에 의해 PC(2)에 요청되기 전에, 수신 모듈(11)이 또한 다운로드(점선 화살표)하기 위한 스왑 페이("Sik")의 동시적인 제안을 수신한다; 이 스왑 페이지(Sik) 각각은 적어도 하나의 스왑 페이지의 소정의 소프트웨어 블록(Bi)에 속하며, 이 블록(Bi)에서 "k"로 언급된다; 선택된 스왑 페이지(Sik)는 다음 송신되는 페이지(Sj, next transmitted page)로 된다; 설명된 실시예에서, 각각의 경합 스왑 페이지(Sik), 및 결과적으로 각각의 경합 블록(Bi)은, 소정의 시간에 디바이스(3)의 결정된 종단점(EPm)과 관련된다;
- 또한, 획득 시스템(1)은, (디바이스(3)에 내장된 프로세서가 다음 스왑을 필요로 할 때)사용 유닛(4)에 의해 요구되는 다음 스왑 페이지(Sj)의 전송을 PC(2)에 요청하도록, 송신 요청(RQ(Sj))을 준비하고 PC(2)에 전송하기 위한 요청 모듈(12)을 포함한다;
- 또한, 획득 시스템(1)은, 제안된 스왑 페이지(Sik) 각각의 다운로딩이 디바이스(3)에 의해 요청될 때까지 이러한 페이지(Sik)의 전송을 지연하도록, 이 각각의 페이지에 대한 연속적인 NAK를 준비하고 PC(2)에 전송하기 위한, 지연 모듈(13)을 포함한다; 설명된 부분(achievement)에서, 지연 모듈(13)은 또한 지연 후 적당한 순간에, 제안된 스왑 페이지 중에서 예상되는 스왑 페이지(Sik)를 디바이스(2)에 전송하는 것을 야기하기 위해, ACK를 PC(2)에 전송할 수 있다; 각각의 스왑 페이지(Sik)가 블록(Bi)과 관련되기 때문에, NAK와 ACK는 사실상 블록(Bi) 그 자체를 나타내는 것으로 고려될 수 있다(설명된 바와 같이, 블록(Bi)이 확인응답되는 반면에 다른 블록(Bi')은 지연된다); 실제로, 설명된 실시예에서, NAK와 ACK는 사용된 종단점(Epm)을 위해 전송된다; USB 상에서, 이렇게 함축적으로 ACK하는 것은 스왑 페이지(Sik)가 송신될 것을 요구된다; 변형 예에서, 단순한 NAK 전송 중지는 다음에 요구되는 그리고 제안되는 스왑 페이지(Sj)를 전송하는 것을 야기하기에 충분하다;
- 또한, 획득 시스템(1)은, 다운로드된 스왑 페이지(Sj)를 일시적으로 저장하기 위한 저장 모듈(15)을 포함하는데, 이 스왑 페이지는 사용 유닛(4)에 의해 사용된다.
호스트 컴퓨터(2)(도 3)는:
- 디바이스(3)에 다운로드될 소프트웨어(SW)를 저장하기 위한 저장 모듈(25);
- 연속적으로 요청된 스왑 페이지(Sj)를 디바이스(3)에 전송하기 위한 송신 모듈(21);
- 다음 스왑 페이지(Sj)의 전송을 요청하는 송신 요청(RQ(Sj))을 디바이스(3)로부터 수신하기 위한 수신 모듈(22);
- 송신을 위한 시간에 걸쳐 경합하는, 각각의 블록(Bi)의 적어도 두 개의 스왑 페이지(Sik)를 디바이스(3)에 동시에 제안하기 위한 가지화 모듈(24);
- 제안된 스왑 페이지(Sik)에 대해 디바이스(3)로부터 NAK를 수신하는 한, 이러한 페이지(Sik)의 송신을 지연하기 위한 지연 모듈(23)을 포함한다; 일단 NAK가 제안된 스왑 페이지(Sik) 중 하나에 대해 중단되는 경우, 이 페이지는 송신 모 듈(21)에 의해 디바이스(3)에 송신될 다음 페이지(Sj)가 된다; 수신 모듈(22)과 지연 모듈(23)은 함께 디바이스 명령어 모듈(28)을 형성한다;
- 호스트 컴퓨터(2)(도 3)는 또한, 송신을 위해 시간에 따라 경합하도록 그리고 디바이스(3)에 동시에 제안되도록 의도되는 구성된 블록(Bi)의 연속적인 페이지(Sik)를 가지화 모듈(24)에 제공하기 위한 연쇄화 모듈(26)을 포함한다; 설명된 실시예에서, 블록(Bi)이 IRP를 이용해 호스트 컴퓨터(2)에서 정해지며; 디바이스(3)로부터 수신된 요청(RQ)이 현재, 가지화 모듈(23)에 의해 경합 스왑 페이지(Sik) 중 하나로서 제안되지 않은 페이지(Sj)에 대한 것인 경우, 요청된 페이지(Sj)는, 가지화 모듈(24)에 제공되며 이후 송신 모듈(21)에 의해 디바이스(3)에 전송되는, 연쇄화 모듈(26)에 의해 검색된다.
- 호스트 컴퓨터(2)(도 3)는 또한, 다른 대기 불록(Bi)이 다음 송신을 위해 디바이스(3)에 의해 대신 선택되고 블록(Bi')이 후속 단계 동안 쓸모없게 될 때, 가지화 모듈(24)에 의해 현재 제안된 블록 중 하나(Bi')(즉, 대응 IRP)를 가능하게는 삭제하기 위한 삭제 모듈(27)을 포함한다.
로컬 네트워크 배열(도 4)의 예에서, 양-방향 링크(5)는 USB 케이블(5A)이며 디바이스(3)는 USB 디바이스(3A)이다. 설명을 위해, 디바이스는 여기서, 두 개의 소프트웨어 블록(B1 및 B2)의 동시적인 제안을 위해 각각 사용될 수 있는, 두 개의 이용가능한 종단점(EP1 및 EP2)을 갖는다.
설명 목적으로, 호스트 PC(2)는, 소프트웨어(SW)에 덧붙여, 디바이스(3A)에 의해 패킷 수신을 검사하기 위한 토큰(TOKEN)을 디바이스(3A)에 주기적으로 전송하 도록 의도된다. 그 일부 상에서(on its part), 디바이스(3A)는 NAK 메시지와 ACK 메시지뿐만 아니라 요청(RQ)을 PC(2)에 전송할 수 있다.
더욱 구체적으로, 디바이스가 아웃 토큰을 NAK할 때, PC(2)는 사전설정 기간 후에, 다음 스왑 페이지(Sj)를 전송하도록 추후에 다시 시도할 것이다.
본 설명에서, 아웃 토큰에 대해 NAK를 지정하기 위해 NAK를 언급한다.
블록(B1 및 B2)이 각각 IRP1 및 IRP2로 기록되는, PC 측의 대응 IRP를 통해 이용가능해진다.
블록(B1 및 B2)은:
- 블록(B1)을 위한 스왑 페이지(S1 내지 S3, S4 및 S7);
- 및 블록(B2)을 위한 스왑 페이지(S5 및 S6)
를 포함한다.
이러한 배열로 인해, 블록(B1)의 스왑 페이지(S4 및 S7)가 블록(B2)의 스왑 페이지(S5 및 S6)와 경합 제공되는, 두 개의 시나리오가 가능한 대안적인 단계로서고려될 수 있다.
작동시에, PC(2)의 동작과 디바이스(3A)의 동작은 시간의 함수로 병렬로 나타난다(도 5 및 6). 제1 시나리오(도 5)에 따르면, 블록(B1)만이 효과적으로 사용되는데, 이는 스왑 페이지(S1 내지 S3, S4 및 S7)가 디바이스(3A)에 의해 연속적으로 선택되는 것을 의미한다. 이때, 종단점(EP1)만이 부분 송신을 위해 사용되며, 다른 종단점(EP2)은 시스템적인 NAK동작(systematic NAKing)을 받기 쉽다. 방법을 상세히 설명하자면, 스왑 페이지(S1)가 전송되기 전에, 블록(B1 및 B2) 모두가 종 단점(EP1 및 EP2)를 거쳐 NAK된다. 제1 페이지(S1)가 요청될 때, 디바이스(3A)는 제1 블록(B1)을 NAK하는 것을 중단하고 이 블록을 ACK하며, 따라서 페이지(S1)가 다운로드되고, 이어서 블록(B1 및 B2) 모두가 다시 NAK된다. 추후에 스왑 페이지(S2, S3 및 S4)에도 연속적으로 동일하게 적용된다. 이러한 포크 패시지(fork passage) 후에, 제2 블록(B2)(즉, 대응 IRP(IRP2))이 PC(2)에 의해 삭제되는데, 그 이유는 블록(B2)이 다음 단계를 위해 더 이상 어떠한 유용성도 가질 수 없기 때문이다. 블록(B1)의 최종 페이지(S7)의 전송은 이후, 단순히 블록(B1)을 NAK하는 것을 중지하고 이 블록을 ACK함으로써, 디바이스(3A)에 의해 요청된 바로 그 순간에 행해진다.
제2 시나리오에 따르면(도 6), 스왑 페이지(S3)의 송신 후에 블록(B1)으로부터 블록(B2)으로의 전환이 행해진다. 더욱 구체적으로는, 연속적으로 송신되는 페이지는 S1 내지 S3, S5 및 S6이다. 이 경우에, 소프트웨어 블록(B1)은 스왑 페이지(S3)가 수신되고 블록(B1 및 B2)이 다시 NAK될 때까지 제1 시나리오에서처럼 사용된다. 그러나, 이러한 포크점에서, 스왑 페이지(S5)가 요청되며 ACK되는 한편 블록(B1)이 계속해서 NAK된다. 이것은 여기에서, 제1 IRP(IRP1)가 후속 단계 동안 쓸모없게 되기 때문에 PC(2)에 의해 추후에 삭제되는 것을 초래한다. 블록(B2)은 블록(B2)의 최종 잔류 페이지(S6)가 요청되어 최종 송신을 위한 페이지의 순번시마다 ACK될 때까지 페이지(S5)의 송신 후에 NAK된다.
시나리오 중 하나의 선택은, 사용 유닛(4)에 의한 소프트웨어(SW)의 사용시의 환경에 따라, 디바이스(3A)에 의해 실시간으로 결정된다.
이러한 메커니즘은 처리를 호스트 PC(2)와 독립적으로 만드는데, 그 이유는 디바이스(3A)가 심지어 필요한 패킷을 요청하기 시작하기 전에 블록(B1 및 B2)의 송신이 이미 개시되기 때문이다. 따라서 이러한 메커니즘은 완벽하게, 디바이스(3A)의 제어하에 있으며 단지 PC(2) 측에 USB 호스트 제어기를 수반한다. 실로, 이는 어떠한 호스트 운영 체제 상호작용도 필요로 하지 않으며- 이것은 전달을 시작하기 위한 호스트 PC(2) 운영 체제의 인터럽트에 대한 반응에 특히 유리한데, 전달은 가장 중요한 시기(critical times)이다.
DSL(도 7)에 대한 특정 실시예에서, USB 디바이스(3A)는 DSL모뎀(3A로 나타남)이다. 모뎀(3A)는 저장 모듈(15)을 형성하는 SRAM(15A)에 할당되는, IC(6)를 포함한다. 저장 모듈(15)은 데이터가 PC(2)로부터 다운로드될 때마다 스왑 코드(다음 페이지(Sj))로 채워질 수 있다.
스왑 토폴로지가 4개의 스왑 가지(B1 내지 B4)(도 8)와, 이러한 가지(Bi)를 기초로 하는 4개의 잠재적인 스왑 시퀀스(SEQ1 내지 SEQ4)(또는 시나리오)를 포함하는, 더욱 복잡한 경우가 이제 설명될 것이다. 가지와 시나리오의 구성이 디바이스(3)의 4개의 종단점(EP1 내지 EP4)에 비추어 구성되는데, 4개의 시퀀스(SEQ1 내지 SEQ4)는 소프트웨어 빌드에 의해 가능해진다.
나타난 예에서:
- 가지(B1)는 스왑 페이지(S1 내지 S6)를 포함하고;
- 가지(B2)는 스왑 페이지(S7 내지 S12)를 포함하는데, 페이지(S7 내지 S10)는 각각 가지(B1)의 페이지(S3 내지 S6)와 병렬로 있으며;
- 가지(B3)는 스왑 페이지(S13 내지 S18)를 포함하는데, 페이지(S13 내지 S16)는 각각 가지(B2)의 페이지(S9 내지 S12)와 병렬로 있으며;
- 가지(B4)는, 각각 가지(B3)의 페이지(S13 내지 S17)와 병렬로 있는, 스왑 페이지(S19 내지 S23)를 포함한다.
이때:
- 제1 시퀀스(SEQ1)는 연속적인 페이지(S1 내지 S6)의 언폴딩(unfolding)을 통해, 순전히 가지(B1)에만 의존하며;
- 제2 시퀀스(SEQ2)는 연속적인 페이지(S1 및 S2) 그리고 이후 가지(B1)에서 가지(B2)로의 전환(제1 포크) 후에는 S7 내지 S12의 언폴딩을 통해, 가지(B1 및 B2)의 조합에 의존하고;
- 제3 시퀀스(SEQ3)는, 가지(B1에서 B2로)의 전환(제1 포크)과 가지(B2 에서 B3로)의 전환(제2 포크)의 두 번의 전환 단계를 통해, B1의 연속적인 페이지(S1 및 S2)와, B2의 S7 및 S8과, B3의 S13 내지 S18의 언폴딩을 통해, 가지(B1, B2 및 B3)의 조합에 의존하며;
- 제4 시퀀스(SEQ4)는, 가지(B1에서 B2로)의 전환(제1 포크)과 가지(B2 에서 B4로)의 전환(제2 포크)의 두 번의 전환 단계를 통해, B1의 연속적인 페이지(S1 및 S2)와, B2의 S7 및 S8과, B4의 S19 내지 S23의 언폴딩을 통해, 가지(B1, B2 및 B4)의 조합에 의존한다.
작동시에, 가지(B1 내지 B4)는 각각 4개의 송신 IRP(IRP1 내지 IRP4로 나타남)(도 9)와 관련되는데, 이 IRP들은 두 개의 종단점에 대해 위에서 설명된 것과 유사하게 4개의 이용가능한 종단점(EP1 내지 EP4)과 사용된다. 그러므로, 외부 요인에 따라서, 다운로드된 소프트웨어(SW)가 특정한 4개의 시퀀스(SEQ1 내지 SEQ4) 중 하나를 취한다.
더욱 일반적으로는, 페이지 스왑(Sj)이 경합 가지(Bi)에서 조직되어 최소한의 가능한 가지가 존재한다. 바람직하게는, 각각의 가지(Bi)가, 위에서 언급된 바와 같이, 전송되어야 하는 소정의 종단점에 전용된다. 그러나, 제한되는 경우 종단점(EPm)의 수만큼, 다수의 가지(Bi)가 동일 종단점 상에 전송되어야 하는 것이 발생할 수 있다.
따라서, 4개의 가지(B1 내지 B4)(도 8 및 9)를 이용하는 위 예에서, 디바이스(3)가 다운로드를 위해 단지 세 개의 종단점(EPm)만을 갖는 경우, 4번째 가지(B4)가 제1 가지(B1)로서 동일 종단점(EP1) 상에 전송될 수 있다. 실제로, 제1 포크에서, 스왑 페이지(S3)가 요청되거나(제1 시퀀스가 채택되며 가지(B2 내지 B4)가 추후에 쓸모없어지는 것을 의미함), 스왑 페이지(S7)가 요청된다(세 개의 나머지 시퀀스 중 하나가 선택될 것을 의미함). 후자의 경우에, 가지(B1)가 삭제될 수 있으며 제1 포크가 통과되는 순간 가지(B4)로 대체될 수 있는데, 이는 제2 포크가 도달되어 가지(B4)가 필요해지기(4번째 시퀀스(SEQ4)) 전에 가지(B2)의 두 개의 다음 페이지(S7 및 S8)의 다운로딩에 대응하는 지연을 여전히 남긴다.
또한, "크로스로드"가 종단점(EPm)보다 더 많은 가능한 페이지(Sj)를 구비하는 경우에, 호스트 PC(2)는, 이용가능한 경합 가지 중 어느 것에도 대응하지 않는 페이지 요청(RQ)을 디바이스(3)로부터 수신하는 순간, 불필요한 가지(들)을 삭제하 고, 요청된 페이지(Sj)에 대응하는 추가적인 가지를 이용해서 새로운 IRP를 개시한다. 이 경우에, 시스템은 호스트 PC(2) 운영 체제의 작용 시간과 더 이상 독립적이지 않다. 따라서, 이는 페이지 지연이 덜 중요해지는 때에만 행해진다.
본 발명에 의하면, (SDRAM 요소를 필요로 하지 않고도)실시간으로 소프트웨어를 수신하고 효과적으로 사용하기 위한 디바이스에서 단순한 SRAM을 사용하는 것을 가능하게 할 수 있다.

Claims (19)

  1. 디바이스(3) 내의 소프트웨어 코드(SW)를 호스트 컴퓨터(2)로부터 획득하기 위한 시스템(1)으로서, 상기 소프트웨어 코드(SW)는 상기 디바이스(3)에 의해 실시간으로 이용되도록 의도되고, 상기 시스템은 상기 디바이스(3)를 위해 의도되는 상기 소프트웨어 코드(SW)의 적어도 하나의 코드 부분(Sj)을 상기 호스트 컴퓨터(2)로부터 수신하기 위한 수신 수단(11)을 포함하는, 시스템(1)에 있어서,
    적어도 두 개의 이용가능한 경합 코드 부분(Sik)의 제안이 상기 디바이스(3)로 다운로드되기 위해 호스트 컴퓨터(2)로부터 상기 디바이스(3)에 동시에 전달되고, 상기 시스템(1)은:
    - 상기 이용가능한 경합 부분(Sik) 각각에 대해 상기 디바이스(3)로부터 호스트 컴퓨터(2)로, 연속적인 부정적인 확인응답(NAK)을 전송할 수 있는 지연 수단(13), 및
    - 상기 이용가능한 경합 코드 부분(Sik) 중에서 수신될 코드 부분(Sik)을 선택하도록 의도되는 선택 수단(14)을 포함하며,
    상기 지연 수단(13)은 상기 선택 수단(14)에 의해 선택된 상기 부분(Sik)에 대한 상기 부정적인 확인응답(NAK)을 전송하는 것을 중단해서, 상기 수신 수단(11)이 상기 선택된 부분(Sik)만을 수신하는 것을 특징으로 하는, 디바이스 내의 소프트웨어 코드를 호스트 컴퓨터로부터 획득하기 위한 시스템.
  2. 제1 항에 있어서,
    상기 디바이스(3)에 전달된 상기 경합 코드 부분(Sj)의 제안 중 어느 것도 상기 선택 수단(14)에 의해 선택되기에 적당하지 않을 때, 상기 선택된 부분(Sik)에 대한 상기 부정적인 확인응답(NAK)을 전송하는 것을 중단하기 전에 그리고 상기 선택된 부분(Sik)을 상기 수신 수단(11)에서 수신하기 전에, 적어도 하나의 송신 요청(RQ)을 상기 디바이스(3)로부터 호스트 컴퓨터(2)로 전송하기 위한 요청 수단(12)을 또한 포함하는 것을 특징으로 하는, 디바이스 내의 소프트웨어 코드를 호스트 컴퓨터로부터 획득하기 위한 시스템.
  3. 제1 항 또는 제2 항에 있어서,
    상기 지연 수단(13)이 상기 선택된 부분(Sik)에 대한 상기 부정적인 확인응답(NAK)을 전송하는 것을 중단할 때, 상기 지연 수단(13)은 상기 선택되지 않은 이용가능한 경합 코드 부분(Sik)의 각각에 대한 상기 부정적인 확인응답(NAK)을 계속해서 전송할 수 있는 것을 특징으로 하는, 디바이스 내의 소프트웨어 코드를 호스트 컴퓨터로부터 획득하기 위한 시스템.
  4. 디바이스(3) 내의 소프트웨어 코드(SW)를 호스트 컴퓨터(2)로부터 획득하기 위한 방법(1)으로서, 상기 소프트웨어 코드(SW)는 상기 디바이스(3)에 의해 실시간으로 이용되도록 의도되고, 상기 방법(1)은 상기 디바이스(3)를 위해 의도되는 상기 소프트웨어 코드(SW)의 적어도 하나의 코드 부분(Sj)을 호스트 컴퓨터(2)로부터 수신하는 단계를 포함하는, 획득하기 위한 방법(1)에 있어서,
    적어도 두 개의 이용가능한 경합 코드 부분(Sik)의 제안이 상기 디바이스(3)로 다운로드되기 위해 호스트 컴퓨터(2)로부터 상기 디바이스(3)에 동시에 전달되고, 상기 방법(1)은:
    - 상기 이용가능한 경합 부분(Sik) 각각에 대해 상기 디바이스(3)로부터 호스트 컴퓨터(2)로, 연속적인 부정적인 확인응답(NAK)을 전송하는 단계,
    - 상기 이용가능한 경합 코드 부분(Sik) 중에서 수신될 코드 부분(Sik)을 선택하는 단계,
    - 및 상기 선택된 부분(Sik)을 위한 상기 부정적인 확인응답(NAK)을 전송하는 것을 중단해서, 상기 선택된 부분(Sik)만이 상기 디바이스(3)에 의해 수신되는, 전송 중단 단계를
    포함하는 것을 특징으로 하는, 디바이스 내의 소프트웨어 코드를 호스트 컴퓨터로부터 획득하기 위한 방법.
  5. - 디바이스(3)에 의해 실시간으로 이용되도록 의도되는 소프트웨어 코드(SW)를 적어도 두 개의 코드 부분(Sj) 형태로 저장하는 저장 수단(25),
    - 상기 코드 부분(Sj)을 상기 디바이스(3)에 송신하기 위한 송신 수단(21)및,
    - 상기 코드 부분(Sj)에 대해 상기 디바이스(3)로부터 부정적인 확인응답(NAK)을 수신시에, 임의의 상기 코드 부분(Sj)의 상기 디바이스(3)로의 송신을, 상기 부정적인 확인응답(NAK)의 수신이 중단될 때까지, 지연하기 위한 지연 수단(23)을
    포함하는 호스트 컴퓨터(2)에 있어서,
    - 송신을 위해 시간상 경합하는 적어도 두 개의 이용가능한 코드 부분(Sik)을 상기 디바이스(3)에 동시에 제안하기 위한 가지화(branching) 수단(24)으로서, 상기 이용가능한 경합 코드 부분(Sik) 각각의 송신은 상기 지연 수단(23)에 의해 지연되기 쉬운, 가지화 수단(24)을
    또한 포함하는 것을 특징으로 하는, 호스트 컴퓨터.
  6. - 디바이스(3)에 의해 실시간으로 이용되도록 의도되는 소프트웨어 코드(SW)를 적어도 두 개의 코드 부분(Sj) 형태로 저장하는 단계,
    - 상기 코드 부분(Sj)을 상기 디바이스(3)에 송신하는 단계, 및
    - 상기 코드 부분(Sj)에 대해 상기 디바이스(3)로부터 부정적인 확인응답(NAK)을 수신시에 임의의 상기 코드 부분(Sj)의 상기 디바이스(3)로의 송신을, 상기 부정적인 확인응답(NAK)의 수신이 중단될 때까지, 지연하는 단계를
    포함하는 소프트웨어 송신 방법에 있어서,
    - 송신을 위해 시간상 경합하는 적어도 두 개의 이용가능한 코드 부분(Sik)을 상기 디바이스(3)에 동시에 제안하는 단계로서, 상기 이용가능한 경합 코드 부분(Sik) 각각의 송신은 상기 부정적인 확인응답(NAK)을 이용해 지연되기 쉬운, 제안 단계를
    또한 포함하는 것을 특징으로 하는, 소프트웨어 송신 방법.
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
KR1020060005797A 2005-01-19 2006-01-19 소프트웨어 코드 획득 시스템 및 방법과, 대응 호스트컴퓨터와, 소프트웨어 송신 방법과, 관련 제품 KR101299999B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP05447005A EP1684174A1 (en) 2005-01-19 2005-01-19 System and process for incremental loading of software program code, corresponding host computer and software transmission process, and associated products
EP05447005.9 2005-01-19

Publications (2)

Publication Number Publication Date
KR20060084395A KR20060084395A (ko) 2006-07-24
KR101299999B1 true KR101299999B1 (ko) 2013-08-27

Family

ID=34943247

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060005797A KR101299999B1 (ko) 2005-01-19 2006-01-19 소프트웨어 코드 획득 시스템 및 방법과, 대응 호스트컴퓨터와, 소프트웨어 송신 방법과, 관련 제품

Country Status (6)

Country Link
US (1) US8595396B2 (ko)
EP (1) EP1684174A1 (ko)
JP (1) JP4994669B2 (ko)
KR (1) KR101299999B1 (ko)
CN (1) CN100580645C (ko)
MX (1) MXPA06000745A (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030059343A (ko) * 1998-04-01 2003-07-07 마쓰시타 덴소 시스템 가부시키가이샤 암시적 채널 프로브를 이용한 복수의 xDSL모뎀 활성화방법 및 장치
US6760333B1 (en) 1999-11-22 2004-07-06 Texas Instruments Incorporated Hybrid digital subscriber loop and voice-band universal serial bus modem
KR100444702B1 (ko) 2002-04-18 2004-08-16 삼성전자주식회사 고속 범용 직렬 버스 인터페이스를 지원하는 디지탈가입자 회선 모뎀

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH104422A (ja) 1996-06-17 1998-01-06 Matsushita Electric Ind Co Ltd 伝送制御装置
US6069879A (en) * 1996-11-14 2000-05-30 Chatter; Mukesh Method of and system architecture for high speed dual symmetric full duplex operation of asymmetric digital subscriber lines
JP2000305771A (ja) 1999-04-19 2000-11-02 Matsushita Electric Ind Co Ltd 不揮発性メモリ内蔵マイコンへのソフトウェアローディング方法
US6658489B1 (en) * 2000-03-29 2003-12-02 International Business Machines Corporation Method for replacing a device driver during system operation
US7020874B2 (en) * 2001-03-26 2006-03-28 Sun Microsystems, Inc. Techniques for loading class files into virtual machines

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030059343A (ko) * 1998-04-01 2003-07-07 마쓰시타 덴소 시스템 가부시키가이샤 암시적 채널 프로브를 이용한 복수의 xDSL모뎀 활성화방법 및 장치
US6760333B1 (en) 1999-11-22 2004-07-06 Texas Instruments Incorporated Hybrid digital subscriber loop and voice-band universal serial bus modem
KR100444702B1 (ko) 2002-04-18 2004-08-16 삼성전자주식회사 고속 범용 직렬 버스 인터페이스를 지원하는 디지탈가입자 회선 모뎀

Also Published As

Publication number Publication date
CN100580645C (zh) 2010-01-13
JP4994669B2 (ja) 2012-08-08
EP1684174A1 (en) 2006-07-26
MXPA06000745A (es) 2006-07-18
US8595396B2 (en) 2013-11-26
US20060230193A1 (en) 2006-10-12
JP2006202292A (ja) 2006-08-03
KR20060084395A (ko) 2006-07-24
CN1808409A (zh) 2006-07-26

Similar Documents

Publication Publication Date Title
KR101255382B1 (ko) 운영체제에 친숙한 부트로더
JP3715991B2 (ja) 並列プロセッサ
KR900005453B1 (ko) 공유자원의 로크아웃 동작방법 및 장치
TWI317482B (en) Wide-port context cache apparatus, systems and methods, and machine-accessible medium having associated information
EP0432076B1 (en) High performance shared main storage interface
US6460108B1 (en) Low cost data streaming mechanism
US20040093454A1 (en) USB endpoint controller flexible memory management
EP0795831A1 (en) Peripheral interface with delayed flow control for run length encoded data transfers
JP2009087332A (ja) ダンプ・データを収集する装置、システム、方法およびプログラム
JP2006195823A (ja) Dma装置
JP2010272076A (ja) マルチプロセッサシステム
KR101299999B1 (ko) 소프트웨어 코드 획득 시스템 및 방법과, 대응 호스트컴퓨터와, 소프트웨어 송신 방법과, 관련 제품
JP5553685B2 (ja) 情報処理装置および情報処理方法
EP1684175B1 (en) System and process for incremental loading of software program code, corresponding host computer and software transmission process, and associated products
US8234651B2 (en) Information processing method and apparatus using the same
CN114157619A (zh) 报文缓存管理方法、装置及网络处理器
US8090915B2 (en) Packet transmission control apparatus and method
JP3644158B2 (ja) 並列計算機におけるデータ送受信方法
JPH06332848A (ja) データ転送方式
CN117573598A (zh) 一种核间通讯方法、设备、通信芯片以及存储介质
JPH0619742B2 (ja) プロトコル実行装置
JPH02124655A (ja) 複数通信ステーション系における送信権巡回方式
CN110727632A (zh) 一种数据处理方法和装置
JP2001265600A (ja) 処理装置のブート方法及びデータ処理システム
JPH04160459A (ja) データ転送装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160719

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170719

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180718

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190820

Year of fee payment: 7